Все говорят о быстрой финальности Dusk. Я нашёл самое интересное в том, что происходит, когда первый блок не проходит проверку.@Dusk
Провёл остаток дня, копаясь в правилах финальности Dusk в whitepaper и в актуальной документации, и именно путь при n=0 в итоге остановил меня.
Блоки проходят через четыре состояния: Accepted, Attested, Confirmed и затем Final. Ключевое число — n: сколько предыдущих итераций в том же раунде уже завершились неудачей.
Когда n равно нулю, блок сразу помечается как Attested. Как только у него появляется единственный последующий блок, который сам уже Attested или Confirmed, он становится Confirmed. Это и есть быстрый путь, который описывают в документации.
Когда n больше нуля, правила меняются. Блок сначала может иметь только статус Accepted. Затем ему нужно 2n подряд идущих блоков со статусом Attested или Confirmed, чтобы он смог перейти в Confirmed. Например, блок на итерации 5 с двумя более ранними неудачами требует ещё четыре «хороших» блока. И только после того, как он станет Confirmed, а его родитель уже будет Final, он станет необратимым.
Так задумано специально: первому успешному генератору дают более сильную финальность. Более поздние получают ту же силу только после того, как сеть увидит больше доказательств того, что более ранние попытки действительно провалились.
В этой части всё сходится.
Но что не давало покоя — как редко в обычных разговорах всплывает более медленный путь. При нормальных условиях большинство блоков идут по траектории n=0 и быстро достигают сильной финальности. Дополнительные требования проявляются только тогда, когда сеть уже испытывает напряжение.
Всё ещё интересно, сколько людей, цитирующих «instant finality», на самом деле посидели и разобрались в разнице между двумя путями.
#dusk $DUSK
Провёл остаток дня, копаясь в правилах финальности Dusk в whitepaper и в актуальной документации, и именно путь при n=0 в итоге остановил меня.
Блоки проходят через четыре состояния: Accepted, Attested, Confirmed и затем Final. Ключевое число — n: сколько предыдущих итераций в том же раунде уже завершились неудачей.
Когда n равно нулю, блок сразу помечается как Attested. Как только у него появляется единственный последующий блок, который сам уже Attested или Confirmed, он становится Confirmed. Это и есть быстрый путь, который описывают в документации.
Когда n больше нуля, правила меняются. Блок сначала может иметь только статус Accepted. Затем ему нужно 2n подряд идущих блоков со статусом Attested или Confirmed, чтобы он смог перейти в Confirmed. Например, блок на итерации 5 с двумя более ранними неудачами требует ещё четыре «хороших» блока. И только после того, как он станет Confirmed, а его родитель уже будет Final, он станет необратимым.
Так задумано специально: первому успешному генератору дают более сильную финальность. Более поздние получают ту же силу только после того, как сеть увидит больше доказательств того, что более ранние попытки действительно провалились.
В этой части всё сходится.
Но что не давало покоя — как редко в обычных разговорах всплывает более медленный путь. При нормальных условиях большинство блоков идут по траектории n=0 и быстро достигают сильной финальности. Дополнительные требования проявляются только тогда, когда сеть уже испытывает напряжение.
Всё ещё интересно, сколько людей, цитирующих «instant finality», на самом деле посидели и разобрались в разнице между двумя путями.
#dusk $DUSK