-
Notifications
You must be signed in to change notification settings - Fork 3
golos.referral_contract.md
Смарт-контракт golos.referral
содержит логику реферальной программы, предусматривающей вознаграждение пользователей, пригласивших для регистрации в приложении Голос своих друзей или сторонних лиц через социальные сети (например, просматривая публикации сторонних авторов или размещая собственные посты о блокчейне). Логика реферальной программы определяет одного пользователя как реферера по отношению к другому (реферала). Смарт-контракт содержит алгоритм вычисления вознаграждения за пост, а также алгоритм завершения действия реферальной программы, в том числе завершение по инициативе пользователя-реферала через выкуп своего аккаунта.
Параметры смарт-контракта устанавливаются делегатами (лидерами) сообщества.
referral_param, types:[
struct breakout_parametrs (
asset min_breakout,
asset max_breakout
),
expire_parametrs (uint64_t max_expire),
percent_parametrs (uint32_t max_percent),
delay_parametrs (uint32_t delay_clear_old_ref)
]
Параметры:
breakout_parametrs
— значение в виде структуры, содержащей поля:
-
asset min_breakout
— минимально допустимое количество токенов, необходимое для выкупа аккаунта-реферала и, соответственно, прекращения реферальной программы; -
asset max_breakout
— максимально допустимое количество токенов, необходимое для выкупа аккаунта-реферала и, соответственно, прекращения реферальной программы;
expire_parametrs
— максимально допустимое время действия реферальной программы;
percent_parametrs
— максимально допустимый процент отчисления рефереру в течение действия реферальной программы;
delay_parametrs
— период времени (в секундах), через который запускается действие по удалению устаревших записей из таблицы.
Экшен-операция setparams
используется для установки (конфигурирования) параметров смарт-контракта. Экшен-операция имеет вид:
void referral::setparams(std::vector<referral_params> params)
Параметр params
— значение в виде структуры. Настраиваемые параметры: breakout_parametrs
, expire_parametrs
, percent_parametrs
, delay_parametrs
.
Экшен-операция validateprms
вызывается смарт-контрактом и используется для проверки параметров на валидность, контролирует наличие в них ошибок.
void referral::validateprms(std::vector<referral_params> params)
Экшен-операция addreferral
используется для создания аккаунта-реферала для приглашенного пользователя. В качестве реферера может быть указан как пользователь, непосредственно пригласивший другого пользователя, так и сторонний аккаунт. Реферер за созданный аккаунт-реферал получает долю в виде процентного отчисления от авторских вознаграждений за публикации реферала.
Экшен-операция имеет вид:
void referral::addreferral(
name referrer,
name referral,
uint32_t percent,
uint64_t expire,
asset breakout
)
Параметры:
referrer
— имя аккаунта-реферера;
referral
— имя аккаунта-реферала;
percent
— процент выплаты рефереру от дохода реферала. Параметр принимает значение от нуля до установленного делегатами максимально допустимого;
expire
— время (в секундах) действия реферальной программы. Значение не должно превышать максимально допустимое время, установленное делегатами;
breakout
— количество токенов, которое необходимо для выкупа аккаунта-реферала.
Для выполнения экшен-операции addreferral
требуется авторизация смарт-контракта реферальной программы. Делегаты (лидеры) дают право создания записи о реферальной программе веб-сайту, который ответственен за привлечение пользователей. реферера.
Экшен-операция closeoldref
является служебной внутренней функцией и используется для освобождения устаревших записей из таблицы активных реферальных программ смарт-контракта. Удаляются данные реферальных программ, действия которых завершены. Экшен-операция имеет вид:
void referral::closeoldref(uint64_t hash)
Параметр hash
— служебный параметр, используемый для размещения нескольких транзакций в одном блоке.
Для выполнения экшен-операции addreferral
требуется авторизация аккаунта смарт-контракта. Вызов выполняется автоматически.