Шардинг Эфириума: централизация вместо масштабирования (часть 1)

 

В этой статье я расскажу о важности различий между лёгкими клиентами и полноценными узлами. Задаётесь вопросом, что это значит? Не беспокойтесь – скоро вы во всём разберётесь. А пока приготовьте чашку кофе: это довольно длинная статья.

Если вы не читали мою предыдущую статью, рекомендую начать с неё:

«Размер блокчейна Эфириума превысил 1ТБ, и да, это проблема» (часть 1часть 2часть 3).

Ниже приведён мой диалог с Виталиком после публикации той статьи. Переписка началась с комментария Виталика, однако для меня её цель состояла в том, чтобы раскрыть настоящую причину, по которой Виталик и многие другие фанаты Эфириума не замечают пагубного влияния шардинга на сеть. К счастью, Виталик исправно отвечал на мои вопросы, формулируя которые, я специально разбил ход рассуждения на мелкие шаги, чтобы постепенно подвести его к этому почти предсказуемому ответу:

sharding1

@StopAndDecrypt: «Похоже, узлы без доли играют незначительную роль, подобно SPV-клиентам в Биткойне, но с некоторыми опциями».

@VitalikButerin: «В любой системе узлы без доли лишь подтверждают транзакции. В системе без шардинга узлы подтверждают транзакции заранее. В системе с шардингом это делается по надобности: узлы подтверждают нужные им транзакции, а также транзакции, для которых другие узлы запросили дополнительное подтверждение».

@StopAndDecrypt: «Неправда. Мой узел отвергает недействительные блоки и помогает достичь консенсуса. Ценность имеют только те узлы, которые участвуют в консенсусе, и, к счастью, это относится ко всем узлам Биткойна. Вы же утверждаете, что консенсус обеспечивают только держатели доли».

https://twitter.com/StopAndDecrypt/status/999703021734031365

Отдельно подчеркну следующую фразу, так она передаёт всю суть данной статьи:

Виталик«Эфириум и сейчас работает таким образом, и введение шардинга ничего не изменит – разве что облегчит жизнь некоторым людям».

Я«Я с этим категорически не согласен, и вот мой развёрнутый ответ».

Цель данной статьи – доступно и детально обсудить следующие вопросы:

  • Различия между сетевыми архитектурами Биткойна, старого Эфириума и нового Эфириума. Никаких заумных уравнений – только простая математика и немного логики.
  • В зависимости от их архитектуры, блокчейн-сети либо централизуются, либо децентрализуются естественным образом по прошествии достаточно долгого времени. Это утверждение не относится к периоду запуска и циклу ажиотажа (каким бы долгим он ни оказался), и подразумевается, что в протокол не вносят никаких изменений. Назовём это свойство «естественным направлением» сети.
  • Изменения протокола влияют на централизацию сети в краткосрочном и среднесрочном периоде, но не обязательно меняют долгосрочное «естественное направление» сети.
  • Эфириум в его текущем виде стремится к централизации, и переход на Proof-of-stake этого не изменит. Шардинг – это плохое решение проблемы масштабирования, которое лишь немного отсрочит неизбежный исход.

Это длинная, но довольно лёгкая статья. Если вам важно разобраться в этой теме, очень рекомендую её прочесть.

Содержание

Часть 1

Основные понятия

  • Виды масштабирования и их реализация в децентрализованных блокчейн-сетях
  • Важная роль полных подтверждающих узлов в децентрализованных сетях
  • Естественная централизация и естественная децентрализация

Часть 2

Различия сетевых архитектур

  • Сетевая топология Биткойна и его естественная децентрализация
  • Топология Эфириума с Proof-of-work и его естественная централизация
  • Топология Эфириума с Proof-of-stake и её неспособность что-либо изменить

Часть 3

Шардинг

  • Топология Эфириума с Proof-of-stake и шардингом и её ещё более существенные недостатки

Часть 4

Ответ на критику моей статьи о размере блокчейна Эфириума

Вопросы о масштабировании

Моё мнение: больший размер блоков приводит к централизации подтверждающих узлов

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

https://ethclassic.ru/2018/06/25/ethereum-1-tb-1/

Виталик говорит, что шардинг – это решение проблемы масштабирования первого слоя:

Заметьте, что понятие «масштабирование» используется здесь безо всякого контекста, но давайте его определим. Нельзя просто так пользоваться термином, не определив чётко его значение. Даже если разные люди понимают масштабирование по-разному, тот, кто высказывает свою точку зрения, по крайней мере, должен предоставить собственное определение.

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

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

  • Расширение: увеличение числа полных подтверждающих узлов на базовом уровне протокола (L1), или же расширение функциональности на базовом уровне без изменения «естественного направления» сети. Расширение функциональности создаёт дополнительные стимулы к использованию сети и, следовательно, способствует увеличению числа подтверждающих узлов. Таким образом, в обоих случаях подтверждающих узлов становится больше.
  • Масштабирование вверх: добавление в сетевую модель новых слоёв поверх базового слоя. Масштабирование вверх реализуется правильно, если не оказывает существенного влияния на нижние слои. Сети платёжных каналов, в том числе Lightning Network, можно считать примерами правильного масштабирования. Однако оно может осуществляться и неправильно – например, через сайдчейны, ведь они могут разрушить модель безопасности майнинга. Однако статья не об этом.

Масштабирование может проводиться также и в противоположных направлениях:

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

Термин «узел» (или нода) у всех на устах, но чаще всего он остаётся неясным для тех, кто плохо разбирается в теме. Один друг уверял меня, что каждый пользователь Nano может запустить узел и работать с собственным блокчейном. Некоторые просто не понимают, о чём говорят, и всё потому, что доступ к достоверной информации для них часто оказывается затруднён. Бесполезно увеличивать число узлов, если эти узлы не относятся к определённому типу. Именно поэтому я утверждаю, что вам преподносят решение, за которым скрывается сокращение сети: его реализация приведёт к тому, что число действительно полезных узлов уменьшится. Возможно, это произойдёт не сразу, а со временем, и далее я кратко объясню, почему это важно.

Важная роль полных узлов

sharding2

Jameson Lopp: Это мой собственный узел. Такие узлы есть у многих, но этот – мой. Я сам подтверждаю транзакции в этом блокчейне. Это моя финансовая жизнь. И я должен быть в ней хозяином так же, как в реальной жизни. Без моего участия узел теряет всякий смысл, а без собственного узла я не чувствую себя финансово защищённым. Я должен поддерживать его работу ради подлинности блокчейна».

Bitcoin: #ЭтоНеКульт

Miles Sutter: Называть культом группу энтузиастов с общими ценностями, практиками и взглядами глупо и мелочно. Так поступают лишь при отсутствии весомых аргументов.

https://twitter.com/lopp/status/1001903809004736513

Сначала я хотел бы кратко обосновать важность полных узлов, а затем рассмотреть распространённые контраргументы. Я отвечу на них в нескольких словах и перейду к более глубокому анализу устройства сети Биткойна. Прочитав моё объяснение, вы поймёте, почему подобные аргументы против полных узлов ошибочны.

Должен предупредить: если вы читаете эту статью, чтобы узнать, как работает Эфириум, и вам совершенно безразлично устройство сети Биткойн, то не вините никого, кроме себя самих, когда потеряете деньги и убьёте время на разработку для Эфириума.

Мой довод весьма прост:

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

Вот некоторые распространённые аргументы против важности полных узлов:

  • узлы, которые не занимаются майнингом, не укрепляют консенсус и только мешают майнерам;
  • с точки зрения децентрализации, рёбра графа сети важнее, чем узлы, поэтому увеличение числа узлов не обязательно способствует децентрализации;
  • сколько узлов необходимо, чтобы обеспечить безопасность? Наверняка можно обойтись некоторым ограниченным их числом.

1. «Узлы не укрепляют консенсус, если не занимаются майнингом»

Отвечу на этот аргумент, сразу же обратившись к принципам работы сети Биткойна. Когда вы прочитаете раздел о её топологии, вы поймёте, что я имею в виду. Я также опубликовал тот раздел в виде отдельной статьи из-за вопиющей дезинформации уже по одному этому вопросу. (Эти рассуждения в конце концов подведут нас к шардингу и Эфириуму, поверьте).

2. «Рёбра графа важнее, чем узлы»

Должен пояснить, что, говоря о децентрализации, я имею в виду модель, изображённую на схеме c) из следующего рисунка (только не в 2D, а в «4D»). Я позаимствовал этот рисунок из статьи Виталика, в которой он сетовал на его недостатки.

sharding3

а) централизованная, b) децентрализованная, c) распределённая сеть
Вопрос о b) и c) остаётся спорным.

Рёбра графа – это линии, соединяющие одни узлы с другими. Ниже изображены два графа, в каждом из которых по 16 узлов. Их число одинаково, однако количество соединений между ними различно. Во втором графе каждый узел соединён со всеми остальными.

Снимок экрана 2018-08-13 в 1.53.27

В чём разница?

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

Что касается второго графа:

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

Это противоречит всем принципам конфиденциальности и безопасности.

Определить «достаточное» число рёбер вполне возможно, в чём вы убедитесь позже. В упомянутой выше статье я также писал о распространении данных, и в этом плане всё становится только лучше, несмотря на «ограниченное» число рёбер в графе сети Биткойна. К аргументу о числе рёбер чаще всего прибегают мошенники (и нередко их разоблачает сам Виталик) – так они пытаются блеснуть умом, проворачивая свои схемы:

sharding6

«Ха-ха. Что за идея: важно число узлов, а не соединений? Такие заявления — сплошная ложь. Их делают, только чтобы сбить с толку обывателей. В Lightning Network 2000 узлов и 8000 постоянных соединений. В Bitcoin Cash 800 узлов и 240000 соединений. Значит, Bitcoin Cash гораздо более децентрализован».

https://twitter.com/ProfFaustus/status/963445469019025409

(Глупо проводить сравнение между сетями первого и второго слоя.)

Сколько узлов необходимо?

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

Задам несколько простых вопросов, на которые у вас вполне может не найтись ответов. Допустим, мы определили, что для обеспечения безопасности сети достаточно 20000 полных узлов.

  • Как написать код протокола, чтобы число узлов гарантированно оставалось не ниже 20000?
  • Даже если мы справимся с предыдущей задачей, каким образом сеть сможет отслеживать собственный размер, не обращаясь к стороннему оракулу?
  • Почему мы остановились именно на числе 20000? Может быть, мы пришли к нему в результате неких измерений в «реальном мире», показавших, что 20000 людей способны предотвратить государственный переворот? Пусть это и глупый пример, но что произойдёт, если число жителей вырастет в 10 раз? Останется ли актуальным значение 20000?
  • Если мы сразу определимся с конкретным числом узлов, а впоследствии поймём, что ошиблись, то для установления нового предела нам придётся пройти через рискованный процесс изменения протокола. Стоит ли это таких усилий?

Я имею в виду, что невозможно определить число узлов, которое гарантировало бы безопасность сети. Нельзя разработать сеть так, чтобы количество узлов держалось на постоянном уровне. Я склоняюсь к следующей идее, достойных опровержений которой я пока не встречал: если протокол остаётся неизменным, а спрос растёт, то любая блокчейн-сеть со временем либо централизуется, либо децентрализуется, в зависимости от её архитектуры. Если вы хотите построить децентрализованную сеть, то её протокол должен естественным образом способствовать децентрализации. Другими словами, устройство протокола должно способствовать тому, чтобы со временем число подтверждающих узлов возрастало. Создать условия для расширения сети – значит не допустить её сокращения, и как раз об этом пойдёт речь в следующем разделе.

Естественная централизация и децентрализация

В начале этого раздела я хотел бы разъяснить, чем отличаются блокчейны, для которых характерны данные тенденции. Надо признать, что я, как и другие авторы, прежде пользовался довольно спорными методами сравнения, однако теперь я постараюсь показать более объективный подход, который, между прочим, выявляет ещё более серьёзные различия между сетями.

  • Объём блокчейна Биткойна растёт линейно, так как объём данных, обрабатываемых узлом при максимальном заполнении блока, остаётся неизменным. Первый график из представленных ниже соответствует второму.
sharding7

Слева: линейный рост блокчейна со временем, справа: неизменные требования по обработке данных

  • Единовременное увеличение размера блока привело бы к тому, что узлам пришлось бы обрабатывать больше данных, но впоследствии эти требования остались бы неизменными. Рост блокчейна ускорялся бы с каждым увеличением размера блока, но оставался бы линейным. С другой стороны, постоянное увеличение размера блока привело бы к экспоненциальному росту как объёма блокчейна, так и объёма данных в блоке.

sharding8

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

Естественная децентрализация: количество валидаторов возрастает

  • лимит размера блока = линейный рост блокчейна;
  • линейный рост блокчейна = неизменные требования к узлам;
  • неизменные требования к узлам = постепенный рост числа узлов.

sharding9

Естественная централизация: количество валидаторов уменьшается

  • неограниченный размер блока = экспоненциальный рост блокчейна;
  • экспоненциальный рост блокчейна = возрастающие требования к узлам;
  • возрастающие требования к узлам = постепенное снижение числа узлов.

sharding10

 

sharding11

«Действительно ли постепенный рост или снижение числа полных узлов напрямую зависит от архитектуры блокчейна?

Думаю, что при постоянном спросе и естественном ходе развития блокчейн-сети число её узлов либо вырастет, либо снизится. Оно не может держаться на определённом уровне.

Вы согласны? 85%: да, 15%: нет».

https://twitter.com/StopAndDecrypt/status/1000874907448827904

sharding12

@StopAndDecrypt: «Возьмите эти 16% и вычтите их из результатов любого опроса, проводимого @bitcoin».

@pierre_rochard: Выберите один вариант.

16%: низкие комиссии за транзакции, 64%: 21 миллион биткойнов.

https://twitter.com/StopAndDecrypt/status/1003807436967481344

Если размер блока фиксирован и никогда не увеличится, то с развитием технологий обслуживать узел становится всё легче, а значит общее число узлов со временем возрастёт. Именно это я и имею в виду, когда говорю о «естественной децентрализации». После активации SegWit в сети Биткойн требования к обслуживанию полного узла возросли, но лишь незначительно. Это не привело к отключению остальных участников от сети и не создало никаких проблем для владельцев узлов, не поддерживающих SegWit. И, что самое важное, это не остановило естественную децентрализацию сети:

sharding13

Интеграция SegWit подразумевала увеличение размера блока, но это делалось не просто ради произвольного «расширения канала». Сейчас размер блока Биткойна регулируется, и заданный предел не подлежит изменению. Слишком большой блок окажется недействительным. Такой подход идеален, так как он гарантирует стабильный поток данных. Это не выносится на голосование: 51% или 49% поддержки – не имеет значения. Слишком большой блок в любом случае будет признан недействительным.

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

sharding14

«В информационной безопасности существует понятие поверхности атаки: чем больше потенциальных уязвимостей в системе, тем больше её поверхность атаки. Похожим образом можно представить, что в управлении существует «поверхность дискуссий»: чем больше решений принимается в результате дискуссий, тем менее эффективной будет организация».

https://twitter.com/nickszabo4/status/964212372624703488?lang=en

Внесение в протокол Биткойна поправок, которые позволили бы изменять размер блока, привели бы к следующим последствиям:

  • блоки нежелательно больших размеров стали бы действительными;
  • майнеры создавали бы блоки, не беспокоясь о последствиях для остальных валидаторов, занимающихся или не занимающихся майнингом;
  • технические требования к узлам продолжали бы усложняться, а число узлов — снижаться.

Чем больше переменных, тем больше способов выделить и обособить различные типы узлов.

Я хотел бы добавить, что конкретный предел размера блока, будь то 2 Мб или 8 Мб, не имеет значения. Благодаря развитию технологий, рано или поздно любой размер блока окажется оправданным, но это отдельная тема. В принципе, можно уже сейчас установить ограничение в 50 терабайт и ждать, когда технологии достигнут соответствующего уровня, однако к тому времени Биткойн уже будет централизован и разрушен. Конкретное значение размера блока требует отдельного обсуждения, а пока я утверждаю только следующее: необходим некий предел, который не изменится со временем и превышение которого делает блоки недействительными.

Это подводит нас к следующийему примеру:  Эфириум и его произвольный «лимит газа»:

 

 

 

 

 

При отсутствии жёсткого ограничения, как на графике выше или как в случае Эфириума, размер блока продолжит расти. Однако технологии никогда не смогут развиваться настолько быстро, чтобы достичь соответствующего уровня эффективности, который позволил бы владельцам узлов поддерживать их работу. Это я и называю «естественной централизацией». Неограниченные требования роста, определяемые узким кругом централизованных участников, не приведут ни к чему хорошему. Даже при наличии шардинга, со временем этот предел будет повышаться. Возможно, шардинг поможет временно распределить нагрузку, однако Эфириум продолжит развиваться в опасном направлении, определяемом фундаментальными свойствами сети:

sharding17

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

Размер блока в Эфириуме ограничен не числом байтов, а числом единиц газа. В данном примере предположим, что это 1000 единиц.

Создавая транзакцию, или контракт, вы должны заплатить газ за её обработку. Допустим, ваша транзакция стоит 2 единицы газа, а моя – 5. Обе наши транзакции поместятся в один блок вместе с другими транзакциями общей стоимостью в 993 единицы газа.

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

Но, тем не менее, 1000 единиц – это совсем не предел…

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

sharding18

@VitalikButerin: «Единственный узел, отклонение блока которым оказывает прямое влияние на остальную сеть, – это майнер/валидатор. Система защищена от атак с участием до 33–50% узлов на уровне подтверждения».

@StopAndDecrypt: «Если бы это было так, то у нас уже был бы Emergent Consensus или SegWit2X. За них сигнализировали около 100% майнеров, но они так и не потрудились создать ни одного блока.

Отправка блока – это как отправка транзакции. Он либо действителен, либо нет.

Все узлы могут отклонять блоки».

https://twitter.com/vitalikbuterin/status/1000232465540136960?lang=en

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

  • Если не вмешиваться в развитие Биткойна (что и планируется), число полных узлов в нём со временем увеличится.
  • Если не вмешиваться в развитие Эфириума, число полных узлов в нём со временем сократится.

Важно отметить, что моё утверждение о Биткойне не было бы верным, если бы не существовало Lightning Network или другой подобной технологии сетей каналов состояния. Естественные свойства сетей проявляются не только в росте или снижении числа узлов. Кроме того, на мой взгляд, даже несмотря на то, что Эфириум тоже может работать с сетями каналов состояния, он сталкивается с гораздо более серьёзной проблемой.

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

 

Продолжение следует…

Источник



Рубрики:Анализ, Важное, Виталик Бутерин, Мнение, Теория, ETH, Ethereum, эфир

Метки: , , , , , ,

3 replies

Trackbacks

  1. Шардинг Эфириума: централизация вместо масштабирования (часть 2) — EthereumClassic
  2. Шардинг Эфириума: централизация вместо масштабирования (часть 3) — EthereumClassic
  3. Шардинг Эфириума: централизация вместо масштабирования (часть 4) — EthereumClassic

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s