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)
}