Многие, когда слышат «окончательность», в голове представляют: «сколько блоков прошло — и уже нельзя менять», то есть понятие «одним ударом». Посмотрев дизайн rolling finality в Dusk, я понял, что эта идея слишком грубая.
Он разбивает состояние блока на четыре уровня: accepted, attested, confirmed, final. Поднимаешься ступень за ступенью — это не чёрно-белая схема. Блоки с меньшим номером раунда, если им не удалось собрать «доказательства провала», могут быть заменены более поздними блоками. Но по мере того, как подтверждённых блоков становится всё больше, вероятность форка снижается экспоненциально и в итоге блокируется в необратимом состоянии final. По сути, эта конструкция превращает вопрос «как долго нужно, чтобы можно было не сомневаться» в кривую, а не в фиксированное число.
Больше всего меня волнует, как она предотвращает оппортунизм — например, когда кто-то специально подстраивается под определённый раунд и ждёт, чтобы затем забрать награды за добычу блоков в следующих раундах. В протоколе специально заложены несколько уровней противодействия: награды за голосование, дополнительные баллы и исключение из права участвовать в добыче блока в следующем раунде. Плюс существует ограничение на число итераций — то есть уязвимости на уровне теории игр «затыкаются» по очереди, а не просто полагаются на одни только штрафы.
Но чем глубже вникаешь в детали, тем больше возникают сомнения: эта схема опирается на предпосылку, что размер комитета достаточно велик и сетевые коммуникации достаточно быстры. А если однажды случится сетевое разделение или задержка распространения сообщений увеличится — не рухнет ли сама основа допущения «быстрое накопление подтверждённых блоков»? Возможны ли одновременно секундная окончательность и устойчивость в условиях экстремальной сети — я пока не вижу ответа, который полностью бы меня успокоил.
@Dusk_Foundation #dusk $DUSK
Он разбивает состояние блока на четыре уровня: accepted, attested, confirmed, final. Поднимаешься ступень за ступенью — это не чёрно-белая схема. Блоки с меньшим номером раунда, если им не удалось собрать «доказательства провала», могут быть заменены более поздними блоками. Но по мере того, как подтверждённых блоков становится всё больше, вероятность форка снижается экспоненциально и в итоге блокируется в необратимом состоянии final. По сути, эта конструкция превращает вопрос «как долго нужно, чтобы можно было не сомневаться» в кривую, а не в фиксированное число.
Больше всего меня волнует, как она предотвращает оппортунизм — например, когда кто-то специально подстраивается под определённый раунд и ждёт, чтобы затем забрать награды за добычу блоков в следующих раундах. В протоколе специально заложены несколько уровней противодействия: награды за голосование, дополнительные баллы и исключение из права участвовать в добыче блока в следующем раунде. Плюс существует ограничение на число итераций — то есть уязвимости на уровне теории игр «затыкаются» по очереди, а не просто полагаются на одни только штрафы.
Но чем глубже вникаешь в детали, тем больше возникают сомнения: эта схема опирается на предпосылку, что размер комитета достаточно велик и сетевые коммуникации достаточно быстры. А если однажды случится сетевое разделение или задержка распространения сообщений увеличится — не рухнет ли сама основа допущения «быстрое накопление подтверждённых блоков»? Возможны ли одновременно секундная окончательность и устойчивость в условиях экстремальной сети — я пока не вижу ответа, который полностью бы меня успокоил.
@Dusk_Foundation #dusk $DUSK
秒级最终性够用了,鲁棒性问题是过度担心
0%
极端网络条件没验证过,我持保留态度
0%
更想看到真实的分叉/攻击场景压力测试数据
0%
0 проголосовали • Голосование закрыто