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

Написал: Триполи

Составил: 0x11, Новости Форсайта

Ранее на этой неделе я задал вопрос на форуме Reddit AMA, организованном Ethereum Foundation, и мое внимание привлек один из ответов:

Я с нетерпением жду возможности увидеть, как время заключения сделок изменится после слияния!

Теоретически среднее время упаковки должно сократиться примерно вдвое после слияния, поскольку ожидаемое время до следующего блока теперь составляет 6 секунд по сравнению с 13 секундами раньше, а более регулярное время упаковки также уменьшает пик. По моему личному опыту, сделки сегодня заключаются очень быстро, даже по сравнению с периодом после EIP-1559 и до слияния. Будет интересно посмотреть, как будут выглядеть данные.

- /u/vбутерин

Динамика времени блока биткойнов изучается все больше, и данные становятся более доступными. Поэтому я перенесу доказательство работы Эфириума в Биткойн для анализа [1]. Обе системы очень похожи, главное отличие состоит в том, что корректировка сложности сохраняет среднее время блокировки Биткойна на уровне 10 минут, в то время как среднее время блока Эфириума сохраняется на уровне около 13 секунд [2].

Однако усреднение времени блока — это огромное упрощение. СМИ часто называют майнеров биткойнов группой компьютеров, решающих сложные математические задачи, но это не так. В слове «решение» подразумевается, что подобные распространенные аналогии предполагают, что майнинговые установки постоянно приближаются к решению, но майнинг криптовалют работает не так. Самая простая аналогия хеширования — подбросить монету и попытаться выпасть орлом 77 раз подряд [3]. Неправильные хэши не обеспечат значимого прогресса, что является разновидностью заблуждения игрока: все хэши независимы, и когда хеш не удается, прогресса нет.

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

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

Разница во времени блока биткойнов: теория и реальность Источник: Джеймсон Лопп;

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

На графике ниже показан рост количества незавершенных транзакций по состоянию на 2 сентября 2022 года. Каждый обрыв или падение на графике представляет собой открытие нового блока и обработку пакета наиболее ценных транзакций. Для удобства вертикальные линии сетки расположены с интервалом в 10 минут, что соответствует среднему времени блока Биткойн.

Биткойн-мемпул

На графике показан нетипичный, но весьма распространенный пробел в обнаружении блоков. С 10:20 до 12:18 было обнаружено всего два блока вместо ожидаемых двенадцати.

Хотя отправка транзакции 12 sat/vB в 10:20 кажется безопасной, она может не быть обработана до 13:00, по крайней мере, за 8, а возможно, и за 11 блоков. Двумя источниками задержки являются изменение времени блока и асимметричная информация о времени, т. е. транзакции, представленные позже, имеют преимущество дополнительной информации и могут платить большую комиссию за пропуск очереди транзакций.

Взяв случайную выборку медленно обнаруживаемых блоков и проанализировав содержащиеся в них транзакции, выявляется четкая закономерность между временем отправки транзакций и относительной плотностью транзакций, включенных в следующий блок [4]. Медленные блоки содержат примерно на 50% больше транзакций из временного интервала непосредственно перед обнаруженным блоком, чем из временного интервала сразу после предыдущего блока.

Напротив, если мы посмотрим на быстрые блоки, распределение времени фиксации будет гораздо более равномерным [5]. Это показывает, что конкуренция по времени в быстрых блоках не имеет смысла.

Большинство блоков можно обнаружить быстро, так имеет ли это значение?

Если мы рассчитаем ожидаемое время блока, то вклад блоков с длинным хвостом на самом деле окажется на удивление большим. Если вы вычислите среднее время блока, но игнорируете выбросы, такие как 20+ или 30+ минут, ожидаемое время блока упадет до 6-8 минут.

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

На самом деле оно не сократилось до 6 минут. В медленном распределении блоков мы видим, что транзакции не заменяются полностью, но я ожидаю, что время упаковки первого блока будет, вероятно, в диапазоне 8-9 минут, а не в наивном приближении в 10 минут.

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

Возвращаясь к Proof-of-Stake Ethereum, предполагая неконкурентное пространство блоков, постоянный 12-секундный интервал блока указывает на среднее время упаковки 6 секунд [6] (по сравнению с 13 секундами в Proof-of-Work).

Однако конкуренция за пространство блоков Ethereum является жесткой.

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

Итак, время упаковки сокращается? Я думаю, это будет зависеть от того, как определяется время упаковки. Если в первом блоке Ethereum преобладали транзакции, отправленные в последние несколько секунд интервала блоков, то мне неясно, будет ли снижение дисперсии иметь значимое значение. С другой стороны, если мы говорим об одной транзакции, комиссия за приоритет которой достаточна для обеспечения включения транзакции, то ожидаемое время упаковки должно быть сокращено с 13 секунд до 6 секунд [7].

аннотация:

[1] Дисперсия экспоненциального распределения вероятностей пропорциональна квадрату времени блока, поэтому дисперсия времени блока Биткойн составляет (600/13)^2 = 2130 раз больше, чем у блока Ethereum PoW. Возможно, это объясняет относительное отсутствие анализа времени блоков Ethereum.

[2] Этот индикатор предполагает, что Ethereum не находится во временном окне хард-форка. Во время хард-форка время блока начинает увеличиваться в геометрической прогрессии, чтобы вынудить майнеров принять это изменение.

[3] На момент написания этой статьи средняя скорость хеширования за 30 дней составляла 250,75 миллиона TH/s, поэтому в 10-минутном блоке происходит 250,75×E6×E12×(60×10) = 1,5E23 попыток хеширования. Чтобы найти эквивалент подбрасывания монеты, мы берем логарифм по основанию 2, который эквивалентен 76,9 последовательным подбрасываниям монеты.

[4] Медленный блок в этом образце представляет собой псевдослучайную последовательность, обнаруженную в период с 22 декабря 2022 г. по 12 января 2023 г., содержащую 40 блоков, а интервал между блоками составляет от 42 до 75 минут.

[5] Быстрый блок в этой выборке представляет собой псевдослучайную последовательность, состоящую из 86 блоков, найденных в период с 22 декабря 2022 года по 12 января 2023 года. Интервал между блоками варьируется от 2,5 минут до 6 между минутами.

[6] Никаких изменений, если мы игнорируем пустые блоки из-за ошибки валидатора.

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