@Dusk_Foundation $DUSK #dusk
Я понял, что блокчейн либо финализирует блок, либо вообще не продвигается дальше. Оказалось, что Dusk создал целое третье состояние между ними — такое, которое появляется только после того, как сеть безуспешно проходит один и тот же раунд шестнадцать раз подряд.

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

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

Так что Dusk построен вокруг жесткой структуры того, сколько раунд может «терпеть» сбои. Шестнадцать неудачных попыток подряд — и система переходит в режим, который они называют emergency mode (режимом аварийного восстановления). Пятьдесят попыток — это абсолютный потолок для любого раунда. И есть один конкретный слот — итерация 255 — выделенный только под аварийные блоки.

Что сделало это еще более интересным для меня, так это то, что Dusk не пытался скрыть, насколько долго проваливающийся раунд может выглядеть нормальным. Он просто провел жесткую границу того момента, когда «нормальный» счетчик перестает работать.

То, что делает этот консенсус «терпеливым», одновременно и позволяет ему долго выглядеть нормально, хотя на самом деле он застрял. Dusk не сократил это окно — они просто возвели стену в конце него.

Я до сих пор не знаю, что именно меняется, когда включается emergency mode. Продолжает ли тот же комитет голосовать так же? Остается ли у блока, финализированного там, та же гарантия, что и у блока из чистого раунда? Для цепочки, построенной вокруг институционального расчетного процесса, это не то, что я бы хотел оставлять неясным.

$BCH $ENA #BullRunAhead