Спасибо за статью, но все-таки осталось непонятным объяснение параметра
imumVoteAgeBeforeCounting = 200
Думаю, что если вы расскажете подробнее зачем он нужен, то эта информация будет полезна и для вкладчиков пула тоже.
простыми словами чтобы после найденного блока пулом , проголосовавшие не могли перемещать свои голоса с пула на пул ,этим параметром устанавливается минимальное время нахождения голосов в пуле ,после которого голосовавший может претендовать на выплату
давайте я объясню.
Смотрите: у нас есть 100 валидаторов, которые поочередно получают право создать новый блок за награду 3 sem. Мы заранее знаем какой валидатор когда будет форгать блок. Важно, что очередь формируется только в начале раунда каждых 200 блоков. Внутри раунда транзакции votes/unvotes не меняют очередность валидаторов, а лишь меняют их позиции в рейтинге. Но внутри раунда такие перестановки ни на что не влияют -- пересмотр списка и формирование очереди произойдет только в начале следующего раунда. Также мы знаем, что у нас есть 40 публичных пулов, которые будут делиться с нами наградой за добытые блоки, если мы проголосуем за них.
Можно описать 2 вида атак:
1. У вас есть свой валидатор с 90К голосами. В начале раунда, сразу после формирования нового списка и очередности валидаторов, вы снимаете все голоса со своего валидатора и перекидываете их в какой-нибудь пул, например, savel. Теперь у вашего валидатора 0 голосов, а у savel 180K голосов. Вы все также имеете статус валидатора и форжите в этом раунде 2 блока, получив 6 sem. Savel тоже форгает 2 блока и делит 6 sem на всех участников пула. У вас доля в пуле 50% и вы получаете еще чуть менее 3 sem. В конце раунда вы снимаете с пула все свои голоса и перекидываете их в своего валидатора, чтобы в начале следующего раунда подтвердить его статус. Затем повторяете описанный алгоритм, зарабатывая не 85 Sem в сутки, а 125 sem.
2. У вас есть какое-то кол-во монет, например, 10K. Если вы закинете их в пул, то будете получать около 9 sem ежедневно. Но вы знаете очередность валидации блоков и имена публичных пулов. Вы можете закидывать голоса в пул, в тот монент, когда подходит его очередь валидировать блок и сразу снимать голоса, перекинув их в седующий по очереди пул. Таким образом вы можете зарабатывать теоретически в 20-30 раз больше.
Вот для устранения такого абуза и был введен параметр
imumVoteAgeBeforeCounting = 200. На что он влияет: ваши голоса будут полностью проигнорированы математикой пула, если вы отзовете свои голоса раньше чем они успеют отлежаться 200 блоков. На что не влияет: на ваш профит -- если ваши голоса отлежались, то вы получите выплату за весь срок. Т.е. можете смело отзывать голоса после отлежки 200 блоков и получить свою долю от 6 добытых пулом монет. Другой вопрос, что пулы не публикуют значение параметра imumVoteAgeBeforeCounting. А он может быть равен и 200, и 500, и 2000 -- каждый оператор пула решает сам и как правило, никому не докладывает. Например, точно известно, что у пула
borderlinefree этот параметр равен 1000.