Кривая вознаграждения. Глубокое погружение. {Перевод}
Оригинальная статья на Steem, опубликованная 16.05.19
Здравствуйте, Стимляне, я @vandeberg(ссылка на Стим), старший блокчейн - разработчик в Steemit, и сегодня я хочу сделать более глубокое техническое погружение в систему вознаграждений и пролить свет на нюансы изменения кривой вознаграждения. Недавно мы предложили изменить кривую вознаграждения на «сходящуюся линейную» в рамках усилий по улучшению экономики. Что это означает?
Более подробно мнение команды Steemit раскрыто в этом посте (англ.)
ELI5
При "квадратном" алгоритме расчёта вознаграждений аккаунты с бóльшей СГ оказывают бóльшее влияние на выплаты, чем аккаунты с низкой силой голоса. Это стимулирует аккумулировать СГ на одном аккаунте, а также может упростить флагование. Побочным же эффектом данного алгоритма стало то, что "богатые стали ещё богаче", но у этого алгоритма был побочный эффект. Он увеличил разницу между крупными и мелкими аккаунтами настолько, что несколько китов без проблем могут влиять на всю экономику, что нельзя назвать справедливым.
При линейном алгоритме все аккаунты влияют на вознаграждение одинаково - пропорционально своей СГ. Неравенство уменьшилось, но потерялся стимул аккумулировать всю силу голоса на одном аккаунте, что привело к созданию множества твинков.
Примечание переводчика: при переходе на "линейку" ещё долго существовало штрафное окно в первые минуты после публикации, что не полностью лишало китов преимущества голосования большим стеком
Механика вознаграждения
Чтобы глубже понять, как работают эти разные кривые, давайте рассмотрим несколько гипотетических сценариев и посмотрим, как они разворачиваются, исходя из того, как голосуют пользователи, и типа применяемой кривой.
По истечении 7 дней пост/комментарий вознаграждается исходя из суммы голосов в rshares, которую он получил в соответствии с кривой вознаграждения. При "линейке" rshares считаются по формуле f(x) = mx + b
, либо можно использовать такую "линейку", при которой rshares вообще не изменяются согласно формуле f(x) = x
. Давайте рассмотрим на примере:
Допустим Элис является автором поста, получившего 10 rshares. Актуальный пул наград составляет 1000 rshares, а фонд вознаграждения содержит 100.000 токенов (Steem, Golos - не важно). Кривая вознаграждения применяется к 10 rshares Элис, давая нам 10 rshares, а те добавляются к общему количеству актуального пула, что в сумме даёт 1010 rshares. В итоге Элис получает вознаграждение 10/1010 или 9.900 Steem. Реальные значения в блокчейне будут сильно отличаться от этих. Кроме того, происходит некоторый распад rshares и другие колебания до закрытия окна.
По тем же правилам, если Боб в то же самое время получит вознаграждение за пост, собравший 5 rshares, сборы их обоих будут добавлены к актуальному вознаграждению, что даст Элис 10/1015, т.е. 9,985 Steem, а Бобу 5/1015 - 4,926 Steem. Как видите, за пост Элис, собравшей вдвое больше rshares будет вдвое бóльшая выплата. Такую кривую можно также назвать пропорциональной, потому что вознаграждение пропорционально отданным за пост/комментарий голосам.
Разные кривые
При запуске Стима бы ла кривая n ^ 3
, которая была изменена на n ^ 2
до первых выплат 4 июля 2016 года. Давайте вновь посчитаем кривую n ^ 2
. Также для примера изменим количество актуального пула до 5000 rshares. Вознаграждение Элис за пост, набравший 10 rshares по формуле f(n)= n ^ 2
составляет 10 ^ 2 = 100
? у Боба в то же время 5 ^ 2 = 25
, а общие актуальные rshares составят 5125
Теперь Элис получит 100/5125 -> 19,512 STEEM, а Боб 25/5125 -> 4,878 STEEM? что в 4 раза меньше. Конечно, это несправедливо. Изменение кривой в Стиме с квадрата на линейку произошло при Хардфорке 19 20 июня 2017 года.
Квадрат
Тем не менее есть большой плюс у квадратичной кривой вознаграждения - она поощряет консолидацию СГ в одном аккаунте, уменьшая количество твинков. Меньше твинков - меньше сокрытия действий их владельца в блокчейне и меньше постов от одного автора, что также положительно влияет на качество постов.
Лучшее из обоих вариантов
Существует ли способ, позволяющий сохранить справедливость "линейки" и преимущества "квадрата"? Мы считаем, что, да и такую кривую назвали сходящейся линейной. Её формула имеет вид n ^ 2 / (n + 1)
Давайте вновь посмотрим на приведённый выше пример, но уже по новой формуле. Теперь добавим Чарли, пост которого набрал 20 rshares. Актуальный пул пусть будет 1000 rshares. Кривая вознаграждения для это примера рассчитывается по формуле n ^ 2 / (n / 5 + 1)
У Элис есть 10 rshares, которые увеличиваются кривой до 33
У Боба 5 rshares увеличиваются до 12 rshares
У Чарли 20 rshares становятся 80
Выплаты Алисы составят 29,333 STEEM. У Боба будет 10.666 STEEM. У Чарли - 71,111 STEEM.
Алиса, имея в 2 раза больше rshares, чем Боб получила вознаграждение в 2,75 раза больше.
Чарли же, у которого rshares в два раза больше, чем у Алисы, получил вознаграждение всего в 2,42 раза больше её.
В этом красота такой кривой вознаграждения! Че больше rshares начисляется за пост/комментарий, тем меньше рост фактической награды. Но фактическая награда всё ещё увеличивается.
Мы решили назвать эту кривую сходящейся линейной, потому что по мере увеличения числа rshares эта кривая сходится к линейной функции и ведёт себя всё больше и больше, как "линейка". Итоговая кривая может быть получена путём расчёта предела, стремящегося к бесконечности. Это будет кривая f (n) = 10n
. Можно настроить, насколько быстро используемая кривая будет приходить к линейной функции, меняя коэффициент знаменателя.
Это график производных кривых вознаграждения, визуализирующий их поведение с течением времени. Красная линия — это n ^ 2
, синяя линия — это n
, зеленая — это n ^ 2 / (n + 1)
, а розовая — это n log (n)
.
Розовая линия была добавлена в качестве еще одной точки сравнения, потому что это обычная функция, которая растет быстрее, чем n
, но медленнее, чем n ^ 2
, и является разумным кандидатом для суперлинейной кривой.
График подтверждает наши расчёты для кривых из примеров выше. n ^ 2
растёт слишком быстро, становясь всё более и более несправедливой, Зеленая кривая для n ^ 2 / (n + 1)
— это круто, потому что она начинается несправедливо с n ^ 2
и заканчивается справедливо с n
. n log (n) продолжает расти вечно. Хотя это не так несправедливо, как n ^ 2
, её всё равно нельзя считать справедливой, в то время как n ^ 2 / (n + 1)
- можно.
Цель этого поста состояла в том, чтобы глубоко погрузиться в одну из важнейших частей предложения по улучшению экономики.
Дополнение от переводчика: автор основным аргументом для внедрения такой формулы называет борьбу с многоликими кураторами, которые разделяют свой стек между несколькими аккаунтами, чтобы скрыть тёмные дела в блокчейне, но на Голосе не менее, а может и более остро стоит проблема многоликих автором, использующих многие десятки (а может и сотни) твинков для постинга откровенного мусора и для борьбы с ними нужно нечто совсем иное