#dusk $DUSK
Числа 2/3 и 1/2 продолжали появляться в разных частях документации по консенсусу, и я всё время относился к ним как к одному и тому же порогу, просто записанному по‑разному. Но это не так. Это два разных правила кворума для двух разных исходов.
Порог одобрения блока: ≥2/3 кредитов комитета должны проголосовать Valid («Верно»). Это сверхбольшинство. Для комитета из 64 кредитов это означает, что как минимум 43 кредита должны согласиться с тем, что блок корректен, прежде чем он будет принят.
Порог отклонения блока: >1/2 кредитов комитета — строго больше половины, плюс один — должны проголосовать Invalid («Неверно»), NoCandidate или NoQuorum. Это простое большинство. Для 64 кредитов это означает как минимум 33.
Тот же комитет. Разная планка. Достичь одобрения сложнее, чем запустить отказ.
Так почему порог отклонения тоже не требует 2/3.
Асимметрия намеренная. Логика проектирования состоит в том, что одобрение блока требует высокой уверенности — вы не хотите, чтобы блок был принят, если за его корректность не согласилось сильное большинство. Но завершение неудачной итерации не несёт того же риска. Если генератор блоков был офлайн или отправил что‑то некорректное, вы хотите, чтобы сеть двигалась дальше быстро, а не ждала более высокого порога для подтверждения отказа. Более низкий порог отклонения означает, что сеть быстрее терпит неудачу и пробует снова раньше.
Я, впрочем, нахожу эту асимметрию порогов более интересной с точки зрения безопасности, чем скорости. Сложный порог одобрения делает для атакующего гораздо дороже задачу добиться принятия вредоносного блока, чем для честных валидаторов — отклонить плохой.
Но что не было объяснено, так это то, как взвешивание комитета взаимодействует с этими порогами — может ли один провиженер, владеющий 20 из 64 кредитов, сколько‑нибудь существенно заблокировать одобрение или ускорить отклонение сам по себе, либо же распределение кредитов по комитету делает такую концентрацию практически невозможной. @Dusk
$DUSK #dusk
Числа 2/3 и 1/2 продолжали появляться в разных частях документации по консенсусу, и я всё время относился к ним как к одному и тому же порогу, просто записанному по‑разному. Но это не так. Это два разных правила кворума для двух разных исходов.
Порог одобрения блока: ≥2/3 кредитов комитета должны проголосовать Valid («Верно»). Это сверхбольшинство. Для комитета из 64 кредитов это означает, что как минимум 43 кредита должны согласиться с тем, что блок корректен, прежде чем он будет принят.
Порог отклонения блока: >1/2 кредитов комитета — строго больше половины, плюс один — должны проголосовать Invalid («Неверно»), NoCandidate или NoQuorum. Это простое большинство. Для 64 кредитов это означает как минимум 33.
Тот же комитет. Разная планка. Достичь одобрения сложнее, чем запустить отказ.
Так почему порог отклонения тоже не требует 2/3.
Асимметрия намеренная. Логика проектирования состоит в том, что одобрение блока требует высокой уверенности — вы не хотите, чтобы блок был принят, если за его корректность не согласилось сильное большинство. Но завершение неудачной итерации не несёт того же риска. Если генератор блоков был офлайн или отправил что‑то некорректное, вы хотите, чтобы сеть двигалась дальше быстро, а не ждала более высокого порога для подтверждения отказа. Более низкий порог отклонения означает, что сеть быстрее терпит неудачу и пробует снова раньше.
Я, впрочем, нахожу эту асимметрию порогов более интересной с точки зрения безопасности, чем скорости. Сложный порог одобрения делает для атакующего гораздо дороже задачу добиться принятия вредоносного блока, чем для честных валидаторов — отклонить плохой.
Но что не было объяснено, так это то, как взвешивание комитета взаимодействует с этими порогами — может ли один провиженер, владеющий 20 из 64 кредитов, сколько‑нибудь существенно заблокировать одобрение или ускорить отклонение сам по себе, либо же распределение кредитов по комитету делает такую концентрацию практически невозможной. @Dusk
$DUSK #dusk

