Лимит по энергии в сутки - 10 апов со 100%, итого 1000% лимит в сутки
Стэк линейный, пример:
А делегировал 100 СП
Б делегировал 10 СП
В делегировал 50 СП
Суммарно стэк 160 СП
Доли:
А=100/160=0.625 (62.5%)
Б=10/160=0.0625 (6.25%)
В=50/160=0.3125 (31.25%)
В теории справедливо было бы, если каждый юзер написал 10 постов, и аккаунт с делегированной силой апнул бы их каждый пост с силой их стэка.
Юзера А он бы апал с 62.5% силой 10 раз и так далее.
Но так как юзеры пишут в разное время, то и подстраиваться под какие-то графики нет смысла.
Но тут можно говорить о том, сколько каждый участник мог бы получить апов всего за сутки.
Это число суммарных полноценных апов с его долей * 10.
А = 625%
Б = 62.5%
В = 312.5%
Получается, можно апать с полной силой, рассчитывая лимит по восстановлению в сутки всей энергии.
Восстанавливается 1000% в сутки, это 1000/24=~41,6% в час, 0,694% в минуту.
Это восстановление общего аккаунта, оно так же математически делится по долям стэка.
Скрипт для пересчета энергии в стэке срабатывает каждую минуту и начисляет 0.694% согласно долям.
То-есть каждую минуту будет регенерироваться право на энергию:
А=0.694% * 0.625 = 0.43375%
Б=0.694% * 0.0625 = 0.043375%
В=0.694% * 0.3125 = 0,216875%
При запуске бота энергия у каждого изначально=проценту его стэка, но регенерируется с скоростью, описанной выше и не может накопиться больше чем доля юзера * 10. Это верхняя граница. Нижняя граница 100%, если автор даже с *10 не может достигнуть ее (предположительно так и будет, так как дольщиков будет достаточно).
Каждый сам в праве следить за своей энергией. Если кто-то заснул или уехал в отпуск на 2 недели, это не значит, что он может рассчитывать на 14 апов по своему стэку. Только 1 раз с 100% силой, дальше в спячку на регенерацию. Это логично и справедливо.
Минимальный порог для апа должен быть 0.10%. При линейности нет никакой разницы - ап будет давать фиксированно часть пула.
Плюс такого подхода в том, что каждый автор будет выжимать от такого бота ап сразу же. То-есть не надо писать 10 постов и каждый само-апать. Достаточно.
А написал пост, получил ап 62.5%. Теперь его энегрия = 0%
Каждую минуту он будет получать восстановление энергии в виде 0.43375%
Через 20 часов он получит 20 часов*60 минут*0.43375%=520,5% энергии, а чуть позже упрется в верхнюю границу для своей доли в 625%.
Следующий пост получит поддержку в размере 100% (так как больше нельзя), и энергия дольщика А упадет до 525%.
Чем хорош данный подход: мелкие дольщики смогут концетрировать сильные апы. Не так много человек могут писать 10 постов в сутки, подобное делегирование позволит использовать свой стэк на 100% раз в сутки. Более того, если кто-то пишет реже - он не теряет своей энергии, так как срабатывает суммарное накопление и он может рассчитывать на ап сильнее, но чуть позже.
Участие выгодно мелким дольщикам. Большим дольщикам это выгодно, если общий размер такого аккаунта в 10 раз сильнее чем его стэк, тогда он будет получать в виде концентрации более сильных апов 1 сильный ап в сутки без необходимости бегать и выставлять 10 апов.
PS Возможно нужно вводить корректировку при апе - умножать его на текущий заряд батарейки, чтобы сохранять ее восстановление. Такие корректировки можно найти уже эмпирическим путем при практическом исполнении.