Реферальная программа

Назначение смарт-контракта golos.referral

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

Параметры, устанавливаемые в смарт-контракте golos.referreal

Параметры смарт-контракта устанавливаются делегатами (лидерами) приложения.

referral_param, types:[
    struct breakout_parametrs {
        asset min_breakout,
        asset max_breakout
    },
    expire_parametrs (uint64_t max_expire),
    percent_parametrs (uint16_t max_percent)
]

Параметры:

  • breakout_parametrs — значение в виде структуры, содержащей поля:

    • min_breakout — минимально допустимое количество токенов, необходимое для выкупа аккаунта-реферала и, соответственно, прекращения реферальной программы;

    • max_breakout — максимально допустимое количество токенов, необходимое для выкупа аккаунта-реферала и, соответственно, прекращения реферальной программы;

  • expire_parametrs — максимально допустимое время действия реферальной программы;

  • percent_parametrs — максимально допустимый процент отчисления рефереру в течение действия реферальной программы.

Операции-действия, применяемые в смарт-контракте golos.referreal

В смарт-контракте golos.referral реализованы следующие операции-действия: setparams, validateprms, addreferral, closeoldref.

setparams

Операция-действие setparams используется для установки (конфигурирования) параметров смарт-контракта. Операция-действие имеет вид:

void referral::setparams(std::vector<referral_params> params)

Параметр params — значение в виде структуры. Настраиваемые параметры: breakout_parametrs, expire_parametrs, percent_parametrs.

validateprms

Операция-действие validateprms вызывается смарт-контрактом и используется для проверки параметров на валидность, контролирует наличие в них ошибок.

void referral::validateprms(std::vector<referral_params> params)

addreferral

Операция-действие addreferral используется для создания аккаунта-реферала для приглашенного пользователя. В качестве реферера может быть указан как пользователь, непосредственно пригласивший другого пользователя, так и сторонний аккаунт. Реферер за созданный аккаунт-реферал получает долю в виде процентного отчисления от авторских вознаграждений за публикации реферала.

Операция-действие имеет вид:

void referral::addreferral(
    name referrer,
    name referral,
    uint16_t percent,
    uint64_t expire,
    asset breakout
)

Параметры:

  • referrer — имя аккаунта-реферера;

  • referral — имя аккаунта-реферала;

  • percent — процент выплаты рефереру от дохода реферала. Параметр принимает значение от нуля до установленного делегатами максимально допустимого;

  • expire — время (в секундах) действия реферальной программы. Значение не должно превышать максимально допустимое время, установленное делегатами;

  • breakout — количество токенов, которое необходимо для выкупа аккаунта-реферала.

Для выполнения операции-действия closeoldref авторизация не проверяется. Метод автоматически вызывается при создании нового реферала и при выплате откупа.

closeoldref

Операция-действие closeoldref является служебной внутренней функцией и используется для освобождения устаревших записей из таблицы активных реферальных программ смарт-контракта. Удаляются данные реферальных программ, действия которых завершены. Операция-действие имеет вид:

void referral::closeoldref()

Для выполнения операции-действия closeoldref авторизация не требуется. Вызов выполняется автоматически из addreferral().

Last updated