#dusk Выбор по детерминированной сортиции — реальный алгоритм под стейкингом
Генератор не может знать, через два блока, кто вот-вот их обойдёт по доходности.
Не потому, что процесс бросает кости.
Он не бросает.
Всё в нём полностью детерминировано.
Просто те числа, от которых зависит детерминизм, ещё не созданы.
Давайте объясню.
Я раньше писал, что всё происходит с весом, пропорциональным стейку, но в прежних постах это было непредсказуемо, не объясняя толком, что именно это значит.
Один комментатор в ответах спросил, как выбор работает «под капотом», так что я вернулся, чтобы найти реальный алгоритм в доках механизма, вместо того чтобы снова повторять такую же туманную формулировку, как у всех.
Процесс выбора называется детерминированной сортицией.
Вот механизм ⚙️.
Выбор проходит по списку подходящих валидаторов по очереди.
Стейк каждого проверяется по отношению к некоторому счёту. Дотягиваешь или превосходишь — ты внутри, кредит начислен.
Не дотягиваешь — твой стейк вычитается из счёта, и вместо тебя проверяется следующий валидатор в очереди.
Сам счёт получается из хеширования вместе четырёх вещей:
seed предыдущего блока, текущего раунда, текущего шага и того, какой номер кредита сейчас выдаётся.
Если подать те же четыре входа дважды, получится тот же счёт дважды.
Это детерминированная часть.
Непредсказуемая часть — это seed.
Seed каждого блока — это собственная подпись генератора на seed до него.
Ничего из завтрашнего seed не существует, пока генератор завтрашнего блока не подпишет его.
Вы не можете «опередить по времени» число, которое ещё не было произведено.
Ещё одна деталь, с которой стоит разобраться:
выигрывать кредит стоит 1 DUSK веса для следующего извлечения в том же раунде.
Небольшая величина, но она означает, что один гигантский стейкер не может просто смести все кредиты в комитете целиком.
Математика слегка склоняется к тому, чтобы распределять это по сторонам.
Интересно, делает ли этот 1 $DUSK nudge хоть что-то для стейкера, у которого миллионы, или это просто погрешность, замаскированная под справедливость
@Dusk
Генератор не может знать, через два блока, кто вот-вот их обойдёт по доходности.
Не потому, что процесс бросает кости.
Он не бросает.
Всё в нём полностью детерминировано.
Просто те числа, от которых зависит детерминизм, ещё не созданы.
Давайте объясню.
Я раньше писал, что всё происходит с весом, пропорциональным стейку, но в прежних постах это было непредсказуемо, не объясняя толком, что именно это значит.
Один комментатор в ответах спросил, как выбор работает «под капотом», так что я вернулся, чтобы найти реальный алгоритм в доках механизма, вместо того чтобы снова повторять такую же туманную формулировку, как у всех.
Процесс выбора называется детерминированной сортицией.
Вот механизм ⚙️.
Выбор проходит по списку подходящих валидаторов по очереди.
Стейк каждого проверяется по отношению к некоторому счёту. Дотягиваешь или превосходишь — ты внутри, кредит начислен.
Не дотягиваешь — твой стейк вычитается из счёта, и вместо тебя проверяется следующий валидатор в очереди.
Сам счёт получается из хеширования вместе четырёх вещей:
seed предыдущего блока, текущего раунда, текущего шага и того, какой номер кредита сейчас выдаётся.
Если подать те же четыре входа дважды, получится тот же счёт дважды.
Это детерминированная часть.
Непредсказуемая часть — это seed.
Seed каждого блока — это собственная подпись генератора на seed до него.
Ничего из завтрашнего seed не существует, пока генератор завтрашнего блока не подпишет его.
Вы не можете «опередить по времени» число, которое ещё не было произведено.
Ещё одна деталь, с которой стоит разобраться:
выигрывать кредит стоит 1 DUSK веса для следующего извлечения в том же раунде.
Небольшая величина, но она означает, что один гигантский стейкер не может просто смести все кредиты в комитете целиком.
Математика слегка склоняется к тому, чтобы распределять это по сторонам.
Интересно, делает ли этот 1 $DUSK nudge хоть что-то для стейкера, у которого миллионы, или это просто погрешность, замаскированная под справедливость
@Dusk
