Хардфорк от Гороха
Здравствуйте мои маленькие голосуны.
Я решился таки обнародовать мои достижения на поприще делания хардфорков. Да-да, Хардфорк близко!
Некоторые из вас спросят, - “что такое Хардфорк?”. Хардфорк, попросту говоря, новая версия программы, которая занимается обработкой блоков блокчейна голос. Почему такая проблема с этим ХФ? Да потому, что новая версия (в данном случае) несет в себе изменения в экономике голоса и, в частности, смену кривой вознаграждения, по которой вычисляется авторское вознаграждение. Сами понимаете, всё это деньги, а капиталисты любят денюжки, потому вопрос создания и принятия ХФ скорее вопрос политического толка, чем технического.
Мне лично не нравится нынешняя ситуация. Если вы посмотрите графики, которые каждый день постит @arcange, то можете увидеть, что медианная выплата на данный момент на уровне 0.01 GBG. Новичкам трудно прорваться в топ, не имея собственных средств. 70-80 постов в топе получают более $1 выплаты, а остальные - фигушку. Может, это и нормально - полсотни богатых постов, кто же его знает. Я не аналитик, теорию игр к голосу не прикладывал, но по себе вижу, сколько набирают посты. До смешного доходит. Голосовать за топ 100 на автомате или продавать свои голоса выгоднее, чем писать самому текста. Отдача больше, а трудозатрат меньше. Это уже чистый майнинг голосов, написание текста стало совсем уж второстепенным занятием.
Так как воли у КФ принять какое то решение не наблюдается, я и решил сам попробовать сделать свою версию. Да я и понимаю КФ, все таки решение не из легких, но боюсь, пока они будут ждать результатов аналитики, народу останется на голосе совсем немного. Мне одно непонятно, почему они не могут делегировать принятие такого решения комьюнити? Почему команда golos core занимается техническими улучшениями, причем кардинальными, которые могут затянуться на месяцы? Почему они не могут уделить время таким вот улучшалкам. Не знаю, не понимаю, не принимаю.
Ну, и мне, конечно, было интересно просто покопаться в коде. Сложности во внесении изменений было не много. Я более чем уверен, если бы ребята из @goloscore захотели, вернее если бы у них была бы такая цель, мы бы получили все это в течении недели, мне же понадобился месяц, так как я все делал по вечерам, уделяя пару часов в неделю. да я и не профи в С++. Делал как мог, не обессудьте, если есть, что предложить, какие изменения внести, буду очень рад. Этот текст я, кажется, набивал дольше, чем, к примеру, "портировал" фичу из стимита.
Что сделанно
Так как я все делал сам, я решил ограничиться сначала линейной функцией, но потом добавил снятие ограничений на вложенность комментариев и на прошлой неделе после короткого обсуждения с @vvk, решил поменять на одно окно выплат длинной в неделю, как на стимите.
Линейная функция
В настоящее время на голосе используется квадратичная формула, для расчета авторского вознаграждения. Расписывать не буду, так как на эту тему уже можно диссертацию писать по материалам голоса. Я поменял формулу на линейную функцию. По-просту говоря, это должно увеличить выплаты тем, кто до сих пор был обделен вниманием китов и немного снизит выплаты постам, на которых концентрируются апальщики. Не ожидайте, что все станут сказочно богаты в одночасье, а толстосумы разорятся. Я сколько не тестировал на тестнете, разница минимальна.
У меня надежда на то, что это сменит правила игры и смешает все карты. Людям понадобится какое то время на поиск слабых мест системы. Может КФ за это время подберет более удачные параметры и начнет таки действовать во благо голоса, а не ждать с моря погоды. Да и как говорил небезызвестный исторический персонаж “Попытка не пытка”. Что мы потеряем, а что найдем не известно. Самоапанье думаю будет не таким выгодным, как на стимите, так как сила апвота не поменяется. Как было 40 апвоутов в сутки, так и остается. Возможно только если крупной сетью ботов устроить карусель. Не знаю.
Я бы предложил ограничить возможность голосования. Только начиная с 300-500 СГ позволить людям влиять на выплаты. Тогда ботоводам пришлось бы покупать приличный стэк голосов, чтобы начать зарабатывать на самоапаньи. С 300-500 СГ заработок на курировании и без того не велик, а так мы мотивируем людей набирать СГ, хорошими постами, а если кто начнет скупать Голоса на бирже, так это всем во благо. Мне кажется это не трудно встроить, возможно достаточно встроить одну проверку, ну и конечно договориться, по порогу вхождения.
Как будет происходить переход на новую функцию.
При принятии ХФ, сумма всех rshares будет пересчитана. Как по отдельно взятым постам, так и сумма всех rshares. То-есть сразу с принятием ХФ мы заживем по новому. Единственный момент, это кураторские. Дело в том, что кураторские зависят от “веса” голоса, а вес вычисляется по сложной формуле с учетом content константы, по квадратичной формуле при голосовании и зависит от множетсва разных параметров. Потому пересчитать его так просто не получится. В результате голосующие после ХФ за пост созданный до ХФ и при наличии старорежимных апвотов к посту, не получат кураторские. Вернее получат очень мало, но на выплату посту повлияют как и положенно.
Единственное окно выплат
Вопрос с кураторскими подтолкнул меня к включению в ХФ еще одной фичи из стимита, - одно окно выплат. После ХФ будет одна единственная выплата, по истечении недели. Второго окна выплат не будет.
При ХФ, все посты, по которым первая выплата еще не прошла, получат новое время выплат, - через неделю. Все остальные посты получат выплаты через месяц, как и было раньше.
Снятие ограничения на вложенность комментариев
Это одна из простых фичь, которую легко было перенять, зато улучшит юзабилити на голосе, с его непонятным ограничением на пять уровней комментирования. Лимит останется, но он будет недосягаем - 64к уровней вложенности.
При тестировании тестнета, в софте golos.io я обнаружил, что там проверка стоит на 6 комментариев, хотя в настоящее время ограничение в пять комментариев. Явно ошибка программирования, которая стоила мне столько нервов - напишешь пост, а его не принимает. Стояло бы в коде 5, то кнопки “Ответить” не было бы. Но это такое - наболевшее ).
Особенностей, кроме того, что в коде golos.io поменять 6 на 10 или любое другое здравое значение, нет. В goldvoice.club не знаю, это кухня @on1x.
Техническое
Исходный код я закоммитил на github, изменения можно посмотреть по этой ссылке
https://github.com/gropox/golos/commits/gropox-0.17.0
Снятие лимита на вложенность комментариев и одно окно выплат я перенял из стимита. Это не мое. Скопировал как мог. Линейная функция - мое :) Это и видно по кривому коду. Это были и мои первые шаги. Не ругайте сильно.
Я все еще тестирую. Каюсь, юнит-тесты я так и не смог запустить. Вчера попробовал, но с наскоку не получилось. Не знаю, рабочие ли они вообще.
Надеюсь разбирающиеся люди вроде @testz, @primus посмотрят и проверят код. Фич не много и изменения обозримы. Но я лично побаиваюсь. Буду рад конструктивной критике и со стороны команды @goloscore и @golosio.
Идеально было бы, если бы goloscore приняли у себя, в своем репозитории эти изменения, возможно адаптированными технически верно.
Собственно дело остается за вами, голосяне. Чтобы принять ХФ, нужно наличие новой версии у как минимум у 17 делегатов. Майнеры и делегаты не из топа тоже считаются. Переключение произойдет в тот момент, когда в топе, среди первых 21 окажутся 17 делегатов с новой версией. При условии конечно, что и время ХФ пришло. Сейчас я кажется поставил середину февраля (был слишком оптимистичен) но можно поменять и на более поздний срок. Я еще потестирую неделю, подожду, что скажут другие, да запущу наверное свою ноду на 17-й версии.
Если вам, голосяне, нужна новая версия, голосуйте за делегатов, которые установят у себя эту версию. Если вам это не нужно, естественно выбирайте других делегатов. Вообще есть делегаты, которых я лично на голосе не встречал, не понимаю до сих пор, почему они в топе. Голосуйте лучше за наших, за народных делегатов, активно учавствющих в жизни голоса.
Дело за вами.
Ах да, потестировать можно все в тестнете, что я запустил у себя.
http://185.183.157.126:8080/created
Там уже созданны пользователи fish00NNN, minnow00NNN, dolphin000NN, orca0000N, whale0000N.
У этих пользователей соотвественно роли столько же СГ.
fish:"100.000 GOLOS",
minnow:"1000.000 GOLOS",
dolphin:"10000.000 GOLOS",
orca:"100000.000 GOLOS",
whale:"1000000.000 GOLOS"
У всех пользователей один и тот же ключ
5KbzQNawUY3XRbfQ5bHqaAXX8bXq1aRmAwp1jsNN4fK9yuBmd9Y
Сильно не налегайте, это не продуктивная система, а тестнет.
На порту 9090 доступна нода
И еще там крутится скрипт, который симулирует жизнь на голосе. Пишет посты, голосует, комментирует. Думаю отключить, что бы не мешал при тестах. Если будет такое пожелание.