Skip to content

golos.referral_contract.md

Alexander Nazarov edited this page Mar 13, 2019 · 1 revision

Смарт-контракт 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 (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 — период времени (в секундах), через который запускается действие по удалению устаревших записей из таблицы.

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

Экшен-операция setparams

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

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

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

Экшен-операция validateprms

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

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

Экшен-операция addreferral

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

Экшен-операция имеет вид:

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

Параметры:
referrer — имя аккаунта-реферера;
referral — имя аккаунта-реферала;
percent — процент выплаты рефереру от дохода реферала. Параметр принимает значение от нуля до установленного делегатами максимально допустимого;
expire — время (в секундах) действия реферальной программы. Значение не должно превышать максимально допустимое время, установленное делегатами;
breakout — количество токенов, которое необходимо для выкупа аккаунта-реферала.

Для выполнения экшен-операции addreferral требуется авторизация смарт-контракта реферальной программы. Делегаты (лидеры) дают право создания записи о реферальной программе веб-сайту, который ответственен за привлечение пользователей. реферера.

Экшен-операция closeoldref

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

void referral::closeoldref(uint64_t hash)

Параметр hash — служебный параметр, используемый для размещения нескольких транзакций в одном блоке.

Для выполнения экшен-операции addreferral требуется авторизация аккаунта смарт-контракта. Вызов выполняется автоматически.