USER_Donate_Task - my-crypto-datascience-portfolio/my_crypto_donations_bank_solana GitHub Wiki

Задачи для Донатера (USER)

USER'ы осуществляют донаты, но НЕ имеют отношения к управлению банком донатов.

Описание:

  • Создателю платформы полагается некоторая комиссия с каждого перевода.
  • Внести пожертвование; при вносе пожертвования жертвователь может указать адрес своего "реферера". Рефереру начисляется CHRT-токены пропорционально от суммы пожертвования. Пропорция 1:101, за один SOL начисляется 101 CHRT.

Comments:

В транзакцию проводки доната включаем еще аккаунты:

  • Аккаунт настроек (передаем из WEB-client)
  • Аккаунт для сбора комиссии (CREATOR'а). Размер комиссии читаем из аккаунта настроек банка/кампании
  • Аккаунт счетчика статистики
  • Аккаунт реферера (токен-аккаунт) - для сохранения в struct DonationSlot и будущего получения вознаграждения от CREATOR'а. Вознаграждения реферерам не выплачиваются немедленно. А выплаты происходят периодично (допустим, раз в сутки - по накопленной статистике).

Структуры:

В RUST контракте введем структуру слота доната (struct DonationSlot) - для каждого нового доната:

struct DonationSlot

{

time, // [u8] - Время доната

campaign_id, // [u32] - ID кампании

owner, // [Pubkey] - Ключ создателя слота доната (донат может создать один USER, а оплатить - другой. Т.е. оплата доната по ссылке)

is_sealed, // [bool] - Признак - завершен ли уже донат (или открыт для оплаты)

sealed_with_account, // [Pubkey] - Ключ того, кто оплатит донат (закрыл оплату)

donate_amount, // [f64] - Размер доната (в SOL, например, 0.1 SOL)

sealed_referer_account, // [Pubkey] - Ключ реферера (кто привел донатера)

chrt_referer_reward_paid, // [bool] - Признак - перечислена ли уже награда рефереру (фактически - 0 или 1)

chrt_top10_reward_paid, // [bool] - Признак - перечислена ли уже награда за попадание в ТОП-10 (фактически - 0 или 1)

}