Сколько транзакций в секунду может обрабатывать Ethereum в настоящее время? Какие изменения позволят сети обрабатывать больше? [дубликат]

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

Далее, также по этой статье :

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

«В масштабе Visa» упоминается как 45 000 транзакций в секунду.

  • Так что же должно произойти на техническом уровне, чтобы эта цель была реализована?
  • Больше майнеров?
  • Больше узлов?
  • Более эффективный основной код?

Или для достижения такого уровня транзакционных возможностей потребуется совершенно новая эволюция Ethereum?

Ответы (1)

Я сделал математику, чтобы показать примерное количество tx/s:

  • Лимит газа в блоке составляет 7 999 992.

  • Транзакция стоит 21 000 газа (предположим, что больше ничего не прилагается)

  • Это ~380 транзакций на блок.

  • Со временем блокировки около 15,03 секунды. Как показывает https://ethstats.net/ .

Это дает нам примерно: 25,346 транзакций/с.

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

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

Существует обратно пропорциональная зависимость между консенсусным объемом и скоростью tx/s . Чем больше времени потребуется узлам для выполнения синхронизации и достижения консенсуса, тем меньше у вас будет транзакций в секунду.

Чтобы улучшить все функции, которые вы упомянули, теперь есть несколько способов входа Ethereum:

  • Sharding (Борны, хотя вы понимаете, что весь блокчейн не может обрабатывать больше транзакций, чем может один узел):«Решение» -> Мы разделяем состояние и историю на K = O(n/c) разделов, которые мы называем «осколками». Например, схема сегментирования в Ethereum может поместить все адреса, начинающиеся с 0x00, в один сегмент, все адреса, начинающиеся с 0x01, в другой сегмент и т. д. В простейшей форме сегментирования каждый сегмент также имеет свою собственную историю транзакций, и эффект транзакции в некотором шарде k ограничены состоянием шарда k. Одним из простых примеров может быть блокчейн с несколькими активами, в котором есть K сегментов, и каждый сегмент хранит балансы и обрабатывает транзакции, связанные с одним конкретным активом. В более продвинутые формы сегментирования также включена некоторая форма межсегментной связи, при которой транзакции в одном сегменте могут инициировать события в других сегментах.

Ethereum Fundation жертвует много долларов, чтобы стимулировать исследования в области шардинга и плазмы.

Здесь я оставляю действительно хорошую информацию о шардинге с github.

Еще одно важное улучшение заключается в следующем:

  • CasperFFG (как было сказано ранее, алгоритм консенсуса PoW не масштабируется, из-за этого исследуются новые алгоритмы консенсуса Proof of Concepts. Теперь Ethereum планирует перейти на PoS , внедрив CasperFFG, чтобы начать период транзакций, в течение которого 1/100 транзакций будут быть сделано с помощью PoS. По сути, это смешанный алгоритм PoW, PoS, цель которого состоит в том, чтобы однажды прийти к полной реализации PoS.) Решение -> Используя алгоритмы консенсуса PoS, вы устраняете концепцию майнинга (как выполнение неприбыльных вычислений для найти хэш в определенном диапазоне). Затем время блока может уменьшиться до 5-7 секунд (говорит Виталик Бутерин).

Здесь я оставляю ссылку на статью CasperFFG.

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

Надеюсь, это поможет!

7 999 992 - это не "пи миллион". 3141592 - это то, что раньше было лимитом газа в блоке :-)
Предложите редактирование, я приму его!! :)
Я ценю невероятно продуманный ответ. Я и сообщество выиграем от этого.
Я не уверен, что понимаю вашу точку зрения на сокращение времени блокировки. (Возможно, я неправильно читаю.) Если вы уменьшите время блока до менее 15 секунд, число дядей увеличится, что плохо. Алгоритмы регулировки сложности настроены таким образом, чтобы поддерживать это время блока — оно не связано с количеством узлов майнинга.
Точно так же я не думаю, что увеличение количества узлов увеличит время блока. Время блока останется прежним в соответствии с настройкой сложности. Если узел не получает распространяемое сообщение вовремя или не может проверить блок (либо из-за того, что он получил его с опозданием, либо из-за того, что его аппаратное обеспечение недостаточно хорошо), то он просто остается позади. Остальной сети все равно, что она медленная (и не может об этом знать).
PoS должен будет использовать блок аналогичного размера, чтобы распространение и проверка происходили с той же скоростью, что и PoW. Если это так, то даже если время блока достигнет 5 секунд, это будет означать только 3-кратное увеличение TPS, то есть ~ 75 TPS, а не около 100.
Это правда, и для одного узла нет проблем. Но с более чем 20000 узлов, которые сейчас находятся в Ethereum, важно время распространения. Вы должны убедиться, что хотя бы значительный процент из них синхронизирован с фактическим состоянием блокчейна. И они могут заставить сеть ждать дольше, чтобы убедиться, что большой процент узлов согласился на одно и то же состояние блокчейна.
Пересматривая сейчас часть больше майнеров, вижу, что не правильно объяснил, буду редактировать. И, наконец, да, будет примерно 75tx/s, если мы настроены оптимистично, но со всеми деньгами, которые сейчас вложены в Ethereum, мы должны понимать, что решения не могут приходить так быстро, как мы хотим, предстоит много испытаний. сделать перед выпуском любого нового улучшения. Если что-то пойдет не так, миллионы и миллионы просто исчезнут. И если я не ошибаюсь, я ничего не говорил о 100 транзакциях в секунду, почему вы это сказали? Был только для информации porpouses?
Время блокировки (~ 15 с) было выбрано потому, что считалось достаточным временем для распространения блоков в сети. Как бы они заставили сеть ждать? Как они узнают, сколько узлов пришли к консенсусу, если они не знают размер сети?
Хорошо, я неправильно понял часть 1/100 txs (я думал, вы сказали, что она может обрабатывать 100 с TPS) - моя ошибка :-)
Потому что вычисление 15 с, возможно, не позволяло блокам достаточно распространяться в сети +20000 узлов. Я пытался сказать, что если количество узлов резко увеличится, возможно, этих 15 секунд будет недостаточно для достижения приемлемого консенсуса. Затем нам нужно подождать, чтобы блок распространялся больше времени.
Итак, вы говорите об изменении протокола для увеличения времени блокировки, а не о том, что произойдет автоматически в результате присоединения большего количества узлов к сети — спасибо за разъяснение.