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

Я заметил, что 2 160 блоков — это не просто число в сетевой спецификации. Это дискретная единица времени, которая определяет, когда вновь назначенный провиженер действительно может войти в консенсус.

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

Это создаёт полезный инженерный компромисс: предсказуемые переходы жизненного цикла вместо немедленного участия.

Механизм по сути такой:

транзакция со ставкой → текущая эпоха → граница следующей эпохи → граница следующей после неё эпохи → активная ставка.

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

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

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

Что меня удивило, так это то, что 2 160 блоков поэтому действует меньше как календарный интервал и больше как часы перехода состояний для провиженеров.

Вопрос, который я постоянно себе задаю, звучит так: сколько из операционной простоты Dusk связано именно с тем, что изменения жизненного цикла принудительно привязываются к этим дискретным границам эпох?

@Dusk_Foundation $DUSK #dusk