Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
goloscore
5 лет назад

CyberWay. Вычисление вознаграждений за пост в приложении Голос. Часть 2

Уважаемые пользователи платформы!

В предыдущей статье CyberWay. Вычисление вознаграждений за пост в приложении Голос. Часть 1 мы освещали вопросы определения сумм вознаграждений за публикацию на веб-сайте приложения Голос в блокчейне CyberWay. В частности, познакомили вас с описанием данных, на основе которых определяются вознаграждения за пост.

Сегодняшняя статья посвящена методу вычисления общей суммы вознаграждения за публикацию. Используемые методы могут быть применены в приложениях для определения (прогнозируемых) сумм вознаграждений в процессе голосования за пост в режиме реального времени, в том числе:

  • общей суммы вознаграждения за пост;
  • общей суммы вознаграждения кураторам поста;
  • сумм вознаграждения для каждого из кураторов поста;
  • общей суммы вознаграждения бенефициарам поста;
  • сумм вознаграждения для каждого из бенефициаров поста;
  • суммы вознаграждения автору поста.

Метод вычисления общей суммы вознаграждения за пост

Для определения прогнозируемой суммы вознаграждения за пост в режиме реального времени рекомендуется воспользоваться формулой

    payout = reward_weight × funds × (sharesfn / rsharesfn)     (1)

Компоненты формулы:

payout — результирующая общая сумма вознаграждения за пост на момент получения данных от событийной модели;
reward_weight = rewardweight::reward_weight — вес поста;
funds = poolstate::state.funds — общее количество токенов в пуле вознаграждений;
sharesfn = poststate::sharesfn — доля токенов, выделенных на вознаграждение за пост, от общего их количества в пуле вознаграждения (значение параметра зависит от веса поста);
rsharesfn = poolstate::state::rsharesfn — количество токенов, выделенных на вознаграждение всех постов в пуле вознаграждения (значение параметра зависит от суммарного веса всех постов).

Для вычисления payout по формуле (1) необходимо использовать данные, полученные от событийной модели в один и тот же момент времени.

Метод вычисления сумм вознаграждения кураторам за пост

Общая сумма кураторских вознаграждений представляет собой часть средств в виде процентного отчисления от общей суммы вознаграждения за пост. Значение процентного отчисления curators_prcnt автор может указать самостоятельно во время создания поста. Если автор не указывает этот параметр, то из таблицы pstngparams берется параметр min_curators_prcnt — минимально возможная доля, выделяемая кураторам от общего вознаграждения за пост.

Для определения общей суммы вознаграждения кураторов рекомендуется воспользоваться формулой

curation_payout = payout - (sumcuratorsw × payout)     (2)

Компоненты формулы:

curation_payout — результирующая общая сумма вознаграждения кураторам за пост на момент получения данных от событийной модели;
payout — общая сумма вознаграждения за пост, вычисленная по формуле (1);
sumcuratorsw = poststate::sumcuratorsw — доля, выделяемая кураторам от общей суммы вознаграждения (суммарный вес голосов всех кураторов на текущий момент времени).

Вычисленная по формуле (2) общая сумма вознаграждения распределяется между кураторами в соответствии с правилами, принятыми в приложении. Ниже приводится рекомендуемый метод определения суммы вознаграждения для каждого из кураторов.

Для определения суммы вознаграждения curator_rewardⱼ отдельному куратору j рекомендуется воспользоваться формулой

curator_rewardⱼ = curation_payout × (curatorswⱼ / weights_sum)     (3)

Компоненты формулы:
curation_payout — общая сумма вознаграждения кураторам за пост, вычисленная по формуле (2);
curatorswⱼ = votestate::curatorswⱼ — вес голоса куратора j, отдавшего за пост голос вида «за»;
weights_sum = poststate::weights_sum — общий вес голосов кураторов, отдавших за пост голоса вида «за»;
(curatorswⱼ / weights_sum) — доля, выделяемая куратору j от общей суммы вознаграждения кураторам.

Вычисление суммы вознаграждения по формуле (3) выполняется для каждого куратора, данные о котором содержатся в структуре vote_event.

Остаточная (невостребованная) сумма

После вычисления всех сумм вознаграждений кураторам может появиться остаточная (невостребованная) сумма, образуемая за счет штрафов во время голосования (например, за раннее голосование). Этот штраф не учитывается в суммарном значении sumcuratorsw, но влияет на величину curatorsw конкретного голоса. Возможная остаточная сумма в виде «сдачи» будет возвращена обратно в пул вознаграждения за посты. Эта остаточная сумма unclaimed_rewards вычисляется по формуле

unclaimed_rewards = curation_payout - ∑(curator_rewardⱼ)     (4)

Компоненты формулы:

curation_payout — общая сумма вознаграждения кураторам за пост, вычисленная по формуле (2);
∑(curator_rewardⱼ) — сумма всех выплат, вычисленных по формуле (3).

Метод вычисления сумм вознаграждения бенефициарам за пост

Та часть средств, которая выделяется автору в виде вознаграждения за пост, распределяется между бенефициарами и автором этого поста. Доля общей суммы вознаграждений, выделяемой бенефициарам, а также количество бенефициаров определяется самим автором во время публикации поста. Правила, в соответствии с которыми распределяется вознаграждение между бенефициарами, устанавливаются для каждого приложения отдельно. Ниже приводится рекомендуемый метод определения суммы вознаграждения для каждого из кураторов.

Для определения суммы вознаграждения ben_rewardⱼ бенефициару j рекомендуется воспользоваться формулой

    ben_rewardⱼ = (payout - curation_payout) × deductprcntⱼ     (5)

Компоненты формулы:

payout — общая сумма вознаграждения за пост, вычисленная по формуле (1);
curation_payout — общая сумма вознаграждения кураторам за пост, вычисленная по формуле (2);
(payout - curation_payout) — общая сумма вознаграждения, выделяемая бенефициарам и автору поста;
deductprcnt = post::beneficiary::deductprcnt — доля вознаграждения, выделяемая бенефициару j. Устанавливается автором во время публикации поста.

Вычисление суммы вознаграждения по формуле (5) выполняется для каждого бенефициара, данные о котором приводятся в таблице message поля beneficiaries — массив, содержащий структуры с полями имен и процентных отчислений.

Общая сумма выплат бенефициарам ben_payout_sum вычисляется по формуле

                   ben_payout_sum = ∑(ben_rewardⱼ)      (6)

Определение размера вознаграждения автору поста

Для определения размера вознаграждения author_reward автору поста рекомендуется воспользоваться формулой

       author_reward = payout - curation_payout - ben_payout_sum

Компоненты формулы:

payout — общая сумма вознаграждения за пост, вычисленная по формуле (1);
curation_payout — общая сумма вознаграждения кураторам за пост, вычисленная по формуле (2);
ben_payout_sum — общая сумма выплат бенефициарам, вычисленная по формуле (6).

Определение общей суммы вознаграждения за пост в токенах и вестингах

Часть вознаграждения за пост выплачивается в виде вестинга, а часть — в виде токенов. Их процентное соотношение указывается во время создания поста. После вычисления суммы вознаграждения за пост по формуле (1) можно определить количество ликвидных токенов, а также вестингов, составляющих данное вознаграждение.

Для вычисления количества ликвидных токенов token_payout, выделяемых в виде вознаграждения за пост в режиме реального времени, рекомендуется воспользоваться формулой

token_payout = payout × tokenprop

Компоненты формулы:

payout — общая сумма вознаграждения за пост, вычисленная по формуле (1);
tokenprop = post::tokenprop — процентное содержание токенов в вознаграждении.

Количество вестингов в вознаграждении vesting_payout составляет

       vesting_payout = payout - token_payout

Заключение

Представленные методы вычисления сумм вознаграждений за пост в режиме реального времени предназначены для их применения в приложении Голос. Данные методы носят рекомендательный характер и могут быть также применены в других приложениях.


Cерия статей, раскрывающих идею и принципы функционирования блокчейна CyberWay и приложения Голос:


Каналы коммуникации с Golos•Core

  • https://t.me/goloscoretc (решение технических вопросов, связанных с работой блокчейн, нод, api и др.)
  • https://t.me/joinchat/BLwf_A118xQ57nsM1Q4MPA (канал для вноса предложений от комьюнити, обсуждение перехода на кодовую базу EOS)
  • https://t.me/golos_tools (решение вопросов по различным интерфейсам и дополнительным инструментам, создаваемым Golos•Core)
  • https://t.me/goloscore_analytics (решение вопросов по работе экономики блокчейн, статистическим экономическим данным, аналитике данных)
  • https://t.me/goloscoretech (новостной канал, с актуальной информацией от Golos•Core)

Мы будем очень рады, если вы поддержите делегата @goloscore. Заходите на страничку https://golos.io/~witnesses голосуйте за делегата Golos•Core!
Спасибо за внимание и хорошего дня!

С уважением,

Команда Golos•Core: @andreypf, @korpusenko, @maslenitsa, @muhazokotuha, @zxcat, @annaeq, @anazarov79, @kaynarov, @s-medvedev, @eugin, @dedbaraded, @jimak.

6
81.787 GOLOS
На Golos с August 2017
Комментарии (2)
Сортировать по:
Сначала старые