Как многие знают, совсем скоро в блокчейне и основных веб-клиентах будет добавлена удобная механика для вознаграждений в виде донатов.
Код в части механики донатов готов, предварительные тесты пройдены, но чем больше участников сообщества протестирует, тем лучше :)
API-нода для подключений - wss://hf23.golos.today/ws
В помощь и сервис https://ropox.app/steemjs/api/, только поменять на адрес тестовой ноды.
https://ropox.app/steemjs/api/database_api/get_dynamic_global_properties?ws=wss%3A%2F%2Fhf23.golos.today%2Fws
Команды отправлять напр. с терминала своей ноды, используя подключение к кли-валлет:
docker exec -it golosd cli_wallet -s wss://hf23.golos.today/ws
Ключ от всех аккаунтов на сервере лайвтеста:
import_key 5JFZC7AtEe1wF2ce6vPAUxDeevzYkPgmtR14z9ZVgvCCtrFAaLw
Код изменений тут https://github.com/golos-blockchain/golos/tree/83-donates
Перевод на tip_balance и обратно
- Перевод с balance на tip_balance:
transfer_to_tip lex litrbooh "100.000 GOLOS" "" true
Параметры: отправитель, получатель, сумма, мемо.
- Перевод с tip_balance в Силу Голоса:
transfer_from_tip lex litrbooh "100.000 GOLOS" "" true
Параметры: отправитель, получатель, сумма, мемо.
Есть возможность перевести самому себе, указав получателя: ""
Операция донатов
donate lex litrbooh "10.000 GOLOS" {"app":"golos-io","version":1} true
Параметры: отправитель, получатель, сумма, мемо в формате JSON.
Также было учтено предложение @vvk о структуре операции, обязательные поля в мемо только app
и version
.
В мемо напр. можно указать ID объекта, за который производится донат (что пригодится для ботов вознаграждений в чатах, играх и пр.), с помощью поля target, которое имеет произвольную структуру, вариант для веб-клиента блогов:
donate lex litrbooh "10.000 GOLOS" {"app":"golos-id","version":1,"target":{"author":"lex","permlink":"golos-rocks"}} true
Пара app и version определяет структуру target. Структура target сохраняется при первой операции, сделанной с этими app и version, и при дальнейших донатах с этими app и version должна быть такая же структура, иначе операция не будет принята. Своего рода вариант контроля версий.
В операции donate также предусмотрена возможность для комментария:
donate lex litrbooh "10.000 GOLOS" {"app":"golos-id","version":1,"target":{"author":"lex","permlink":"golos-rocks"},"comment":"Good post!"} true
Операция донатов и реферальная программа
Пример создания реферального аккаунта (подробнее было описание тут):
create_account_referral lex "1.000 GOLOS" "15000.000000 GESTS" newaccount "{}" {"referrer": "lex", "interest_rate": 1000, "end_date": "2020-10-25T14:00:00", "break_fee": "10.000 GOLOS"} true
где: lex - создатель аккаунта, newaccount - новый аккаунт, 1000 (interest_rate) - 10% реферальный процент.
При донатах на аккаунт реферала 10% от суммы доната передается рефереру.
Это позволит мотивировать привлекать новых авторов, которые потенциально могу получать хорошие донаты и делиться % с тем кому удалось расширить аудиторию на проекте.
Было снято и максимальное ограничение в 100 токенов на параметр max_referral_break_fee
, выставляемый делегатами:
update_chain_properties lex {"max_referral_break_fee":"500.000 GOLOS"} true
Эмиссия токенов для клэйма
С принятием 23 ХФ процент от эмиссии, уходивший ранее в Силу Голоса системы, теперь уходит на accumulative_balance
- общий баланс системы, с которого каждый пользователь cможет снимать (клэймить) суммы на свой (или чей-то) tip_balance
или в свою (или чью-то) Силу Голоса.
Сумма, доступная для клэйма пользователем, определяется так: accumulative_balance * (СГ пользователя / СГ системы)
Такой командой можно сделать клэйм:
claim "lex" "" "100.000 GOLOS" false true
Параметры: отправитель, получатель (можно переслать на чужой баланс), сумма, в СГ (если true) или на tip_balance (если false). Как и операция donate, claim по постинг-ключу.
Если пользователь не делал клэйм в течение делегатского параметра claim_idleness_time
(по умолчанию сутки) с момента предыдущего клэйма (или с момента применения 23 ХФ, если он ни разу не делал клэйм), то его доля в accumulative_balance
переводится в пополнение фонда воркеров на развитие блокчейна. Не сняли свою долю, помогли блокчейну на развитие :)
Задачи о предлагаемых правках на веб-клиенте с учётом изменений в блокчейне, тут:
https://github.com/golos-blockchain/golos-ui/issues/20
https://github.com/golos-blockchain/golos-ui/issues/15
Ещё есть время прокомментировать...
Если вы найдете какие-либо ошибки в коде изменений, прошу предоставить описание, способ репродуцирования, входные и выходные данные, скриншоты (по возможности).
Постараемся объективно оценить помощь и передать баунти-вознаграждение.
@lex замечательно!
@lex репостнул спасибо за информацию..
Как-то это не очень...
@cats это не новость, именно этот момент больше всего вызывает вопросы.
Но, во-первых, делегаты могут установить claim_idleness_time и более суток.
Во-вторых, нужно было что-то делать с массовой пассивностью бол-ва, когда неделями и месяцами пользователи не появляются на блог-платформе (где активность в виде постов, комментариев, репостов, апов, донатов... во многом её основа).
Ну и в третьих, операции клэйма и доната доступны с помощью постинг-ключа, что открывает массу вариантов создания ботов для автоклэйминга, сервисов/пулов проектов тематической поддержки авторов, когда условно какой-то холдер доверит свой постинг-ключ боту распределяющему донатами часть токенов на поддержку других авторов и т.д.
И это не исчерпывающий список...
@lex, Поздравляю!
Ваш пост был упомянут в моем хит-параде в следующих категориях:
@lex Отлично! Я готов закодить донаты.
В апи ноды будут методы для получения истории донатов по посту?
как можно получить список донатов пользователя и донатов ему? Есть апи метод ?
будет метод?
@avral да, есть,
get_donates
вsocial_network
, имеющий параметры from и to. По посту - тоже через get_donates.Только на гите ещё прежние таски поправить надо, о которых писал в ТГ.
https://github.com/golos-blockchain/golos-ui/issues/67
https://github.com/golos-blockchain/golos-ui/issues/63
Только from и to? По target фильтровать нельзя?
@denis-skripnik по target добавят, тоже будет
Хорошо
@denis-skripnik пока нет, передал инфо разработчику, посмотрим...
Ок
@lex как многие знают - отличная ссылка. Пост ничего не говорит о том, о чём речь и куда идти за подробностями
@kwaskoff, делегаты тестируют. У них есть тестикулы. Это всё, что нужно знать о делегатах на время незавершённого транзита.
@kwaskoff а вы есть в делегатах? Или в заголовке поста что-то тоже непонятно?
Чу! Если припасть ухом к земле - слышен звук копыт приближающегося ХФ-23.
@romapush да, в мае наконец закончим транзит )
@lex Супер!
@lex отличные новости!