Сравнение методов расчёта кэшбэка скриптов 50/50 и goldvoice
У участников программы 50/50 существует некоторая путаница с тем, какие проценты возврата ставить в случае использования клиента goldvoice
Пользователи скрипта otkat и Криптобабушка знают, что там процент возврата нужно выставлять равным 80%, и тогда суммарно вознаграждение за пост будет разделено между авторами и кураторами как раз 50/50.
Как Голос производит авторское начисление за пост
Об этом хорошо написано в статье @on1x Экономика Голоса - смена парадигмы у пользователей.
Вкратце: Голос рассчитывает размер вознаграждения в GESTS (сила голоса), половину отдаёт в СГ, а половину конвертирует в GBG.
Какими данными для расчёта можно оперировать
В API голоса есть метод get_content. Он выдаёт всю инфу по посту, включая размер выплат. Пример:
% piston read --full @vvk/problemy-opensource-proekta-golos |grep payout
curator_payout_value: 50.447 GBG
last_payout: 2017-10-14 08:08:18
max_accepted_payout: 1000000.000 GBG
mode: second_payout
pending_payout_value: 2.870 GBG
total_payout_value: 296.506 GBG
total_pending_payout_value: 2.874 GBG
Здесь мы видим значения выплат авторам и кураторам, сконвертированные в GBG "для удобства" (лучше бы ничего не конвертировало а писало как есть, это только вносит путаницу).
Точные данные по выплате в GBG можно взять непосредственно из блокчейна с помощью запроса get_account_history, в частности нас интересует виртуальная операция author_reward
. Пример:
[3510,
{'block': 10363381,
'op': ['author_reward',
{'author': 'vvk',
'permlink': 'problemy-opensource-proekta-golos',
'sbd_payout': '136.392 GBG',
'steem_payout': '4.958 GOLOS',
'vesting_payout': '232626.873549 GESTS'}],
'op_in_trx': 1,
'timestamp': '2017-10-14T08:08:18',
'trx_id': '0000000000000000000000000000000000000000',
'trx_in_block': 3,
'virtual_op': 0}]
Здесь мы уже видим точные значения выплат автору.
Алгоритм скриптов 50/50
Скрипт otkat получает значение sbd_payout, берёт от него 80% и раздаёт апвотерам согласно rshares.
Для моего поста, взятого для примера, otkat предлагает отдать такое значение GBG:
otkat:index:inf userid = vvk +0ms
otkat:index:inf permlink = problemy-opensource-proekta-golos +2ms
otkat:index:inf user's balance = 7.316 +903ms
otkat:index:inf found reward for the post 136.392 GBG +3s
otkat:index:inf reward to pay 109.114 GBG (80%) +0ms
reward = 109.114 GBG
Проблема: скрипт не учитывает размер выплаты в Голосах (steem_payout). А по мере увеличения долга системы (общей массы GBG) это значение будет увеличиваться.
Алгоритм goldvoice
goldvoice берёт total_payout_value
, делит на 2, и по дефолту 50% от этого предлагает раздать кураторам. Уже выплаченные кураторские curator_payout_value
при этом не учитываются.
Рассчёт goldvoice для моего примера: (296.506 / 2) * 0.50 = 74.13 GBG
Если % возврата поставить 80%, получим такое значение: (296.506 / 2) * 0.80 = 118.60
Таким образом goldvoice раздаст немного больше GBG, чем скрипт otkat, компенсируя то, что otkat не учитывает выплату в Голосах.
Вывод
- При использовании goldvoice необходимо выставлять процент кэшбэка 80%.
- Алгоритм скрипта otkat неточен, т.к. не учитывает выплату автору в Голосах (steem_payout)