Где узкое место масштабируемости блокчейна?

Есть момент, который я до сих пор не понимаю в блокчейне. Я никогда не видел, чтобы клиент ethereum постоянно загружал процессор или сеть на 100%. Так почему же нельзя обрабатывать транзакции быстрее? Я предполагаю, что 100% загрузка графического процессора на машине для майнинга не является узким местом, потому что размер блока произвольный. Итак, где именно узкое место?

Спасибо!

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

Ответы (5)

Два типа узких мест

Здесь действуют два типа ограничения скорости. Это задержка и пропускная способность. Задержка — это количество времени, которое необходимо ждать, пока транзакция не будет обработана. Другой — пропускная способность: количество транзакций, которые могут быть обработаны за определенное время. Представьте себе разницу между супермаркетом со 100 посетителями и 10 кассами и продуктовым магазином с 5 посетителями и одной кассой. Теперь представьте, что каждая касса может обслуживать одного посетителя в минуту. В первом случае средний человек ждет 5 минут, чтобы его выписали. Во втором каждый человек ждет в среднем 2,5 минуты. С другой стороны, супермаркет может обслуживать в 10 раз больше клиентов в минуту. Таким образом, загруженный супермаркет может иметь более высокую пропускную способность, чем небольшой продуктовый магазин, но задержка может быть выше. Теперь представьте, что оба магазина закрыты 20 часов подряд в день и посещают по 100 покупателей в день. По сути, вам нужно ждать в среднем 10 часов, чтобы купить продукты (время оформления заказа незначительно). Вы можете видеть, что кассовые прилавки показывают низкую загрузку.

Узкое место задержки

В Ethereum минимальное время между блоками на данный момент составляет в среднем около 25 секунд. Таким образом, минимальная задержка составляет в среднем около 12,5 секунд (т. е. если ваша транзакция выбрана для следующего блока, вы ждете в среднем около 12,5 секунд, пока он не будет включен). Если бы в минуту отправлялась только одна транзакция, это не повлияло бы на среднюю задержку, и пропускная способность составила бы один блок в минуту. Использование ЦП для обработки блоков останется очень низким. По техническим причинам интервал между блоками ранее был установлен на более низкое значение, чтобы сеть оставалась синхронизированной (т. е. чтобы узлы могли достичь консенсуса). Технически это число могло быть меньше , и раньше так оно и было. Среднее время блока растет из-за ледникового периода/бомбы сложности Ethereum., нетехническая причина, которая используется для создания сильных стимулов для разработчиков, чтобы они поторопились внедрить доказательство доли (PoS), чтобы заменить доказательство работы, и для узлов, чтобы обновить свои клиенты, когда будет введен механизм PoS. Поскольку большая часть времени тратится на ожидание информации, загрузка ЦП остается низкой.

Узкие места пропускной способности

Между тем, существуют технические ограничения в отношении пропускной способности. Первым из этих ограничений является практичность: многим/большинству операторов узлов будет очень сложно запустить узел, если емкость хранилища, необходимая для хранения блокчейна, вырастет на 1 ТБ в неделю, так как я предполагаю, что немногие люди используют (или даже знают как запустить) системы, которые позволяют масштабировать свое хранилище с такой скоростью, если это вообще возможно. В этом есть и экономический аспект: даже если бы люди знали, как это сделать, было бы дорого для кого-то, кто просто пытается добавить узел для проверки транзакций, чтобы не отставать от такого темпа роста.

Вторым техническим ограничением пропускной способности являются ограничения на скорость обработки и хранения узлов, что означает, что некоторые узлы не смогут проверять блоки достаточно быстро, чтобы оставаться в синхронизации без каких-либо ограничений на обработку/обработку, связанную с транзакциями в каждом блоке. . По той же причине это приводит к ограничению количества транзакций, которые узлы майнинга могут включать в блок. Без ограничения на обработку/хранение на блок было бы сложнее определить, какую комиссию включить в транзакцию, чтобы обеспечить своевременную обработку: количество транзакций, включенных в блок, может сильно различаться в зависимости от того, какой майнер обрабатывает блок, и от сети. часто не синхронизируется. Разделениеспособ обойти это техническое ограничение. Обратите внимание, что во время ожидания возврата данных с диска ЦП перегружается, и вы увидите низкую загрузку ЦП. Даже если блоки превысят лимиты обработки на некоторых узлах майнинга, более быстрым узлам потребуется меньше времени для проверки транзакций блока, и они не увидят 100-процентную загрузку ЦП.

Третье ограничение вытекает из технических ограничений на пропускную способность, описанных выше: искусственное ограничение на объем обработки/хранилища, который может использоваться транзакциями в блоке, имеет форму лимита блочного газа. Я предполагаю, что одна из причин, по которой это существует, заключается в том, чтобы избежать достижения любого из двух технических ограничений. Это упрощает и удешевляет запуск узла. В этой ситуации технические ограничения на пропускную способность растут пропорционально количеству осколков, и таким же образом может быть повышен лимит блочного газа. На практике может быть нежелательно увеличивать лимит блочного газа прямо пропорционально технической пропускной способности сети: я предполагаю, что желательно, чтобы любой узел мог проверить, что сеть Ethereum работает, как задумано (т. е. обнаружить мошенники); таким образом, узел может случайным образом проверять осколки. правильная работа. Вероятность обнаружения мошенников уменьшается с количеством осколков. Если вам требуется выделить узел для тестирования одного сегмента, чтобы не отставать от транзакций, вы можете использоватьпарадокс дня рождения в вашу пользу, чтобы поддерживать сублинейный рост количества узлов проверки (относительно общего количества осколков) для обнаружения мошенников с достаточно высокой вероятностью.

Вывод

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

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

Итак, еще раз:

Есть 2 типа узких мест.

1.The hardware bottleneck
2.The algorithm bottleneck

Аппаратное узкое место — это, по сути, ограничение оборудования, на котором вы запускаете свой блокчейн. Если бы все пиры Ethereum использовали 10-гигабитные сетевые карты, 16-ядерные процессоры, они достигли бы более высокой скорости транзакций. Теоретически Ethereum может обрабатывать 1000 транзакций в секунду.

Теперь узкое место алгоритма. Узкое место алгоритма объясняется нетехническим языком в этой статье на моем веб-сайте: http://www.afterether.org/blockchain-scalability-by-blockchain-clustering.html . Но вот лишь краткое изложение:

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

Чтобы решить проблему узкого места, вы можете настроить аппаратное и программное обеспечение или разделить валюту на несколько блокчейнов.

Доказательство того, что в текущей системе существует узкое место задержки: если бы у вас была сеть, в которой половина узлов находилась на Земле, а другая половина находилась рядом с солнцем, вам было бы трудно синхронизировать сеть с временем блока. менее ~8 минут. Если, конечно, вы не считаете нашу неспособность отправлять данные со сверхсветовыми задержками аппаратным узким местом. Да, у вас может быть свойство согласованности в конечном итоге (я думаю), но вы также получите частые (и огромные) реорганизации цепочки с временем блокировки 1 с.
Это приведет к завершению транзакций, основанных на предыдущих транзакциях. Географическое разбиение для уменьшения задержки, но его все равно необходимо учитывать. Нижняя граница задержки для случайно распределенной наземной сети с использованием Casper составляет ~ 2,5 с (задержка туда-обратно, связанная с пятью раундами связи); нижняя полезная граница задержки для аналогичного алгоритма проверки работоспособности, вероятно, является временем одностороннего пинга (в противном случае вы просто будете постоянно реорганизовывать блокчейн — что работает, но не так уж полезно, если то, что вы хочу консенсуса).

Так почему же нельзя обрабатывать транзакции быстрее?

Транзакции должны быть помещены в блоки. Количество транзакций, которые могут поместиться в блок, определяется лимитом газа в блоке , поэтому...

... потому что размер блока произвольный.

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


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

Среднее время блокировки теперь составляет около 25 секунд . (Это немного дольше, чем предложил Томас в своем ответе, потому что мы движемся к Метрополису, и срабатывает «бомба сложности» , которая постепенно увеличивает время между блоками.)

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

... блокчейны с быстрым временем подтверждения (т.е. временем блока) в настоящее время страдают от снижения безопасности из-за высокой скорости устаревания - потому что блокам требуется определенное время для распространения по сети, если майнер А добывает блок, а затем майнер Б добывает добычу еще один блок до того, как блок майнера А перейдет к Б, блок майнера Б в конечном итоге будет потрачен впустую и не будет способствовать безопасности сети.

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

Наконец, время блока Эфириума намного короче, чем время блока Биткойна (10 минут?). Эфириум может сделать это, потому что он использует что-то под названием GHOST , которое помогает восстановить часть хеш-мощности, используемой при майнинге «бесполезных» ( осиротевших ) блоков.

См. также: Что произойдет, если время блокировки изменится на 5 секунд?

Система должна прийти к консенсусу и сделать это под доказательством работы. Разработчики системы выбрали 14 секунд в качестве объема работы, который они хотели возложить на майнера (в среднем), который выигрывает блок и получает награду за блок. Лучшее место, которое поможет вам разобраться в этом, по-прежнему, на мой взгляд, это оригинальная Белая книга Биткойна. У других могут быть лучшие источники. Узнайте, как работает консенсус и доказательство работы, и вы получите ответ.

Узкое место, скорее всего, вызвано несовершенством конструкции системы. Доказательство работы используется для совместного решения нескольких задач в биткойнах. Криптовалюта Ripple работает без блокчейна и имеет другой алгоритм консенсуса. Что, как заявляют создатели, позволяет сократить стоимость транзакции до долей центов, а время подтверждения до минут. Вы можете посмотреть эту лекцию, чтобы узнать больше: https://www.youtube.com/watch?v=7abKUs9tYZg

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