USER_CHRT_Tokens - my-crypto-datascience-portfolio/my_crypto_donations_bank_solana GitHub Wiki
Работа с токенами CHRT
Создание ассоциированных аккаунтов
Токен-аккаунты привязаны (ассоциированы) к обычным SOL-аккаунтам.
Дополнительные адреса (аккаунты), необходимые для транзакции проводки доната (для задачи банк донатов):
- Адрес реферера (для вычисления токен-адреса реферера)
- Токен-адрес реферера (передаем в транзакцию доната. Как альтернатива - награждать из отдельного WEB клиента, что более надежно.)
Токен-адрес реферера можно сгенерировать в WEB клиенте (getAssociatedTokenAddress, createAssociatedTokenAccount):
const associatedTokenAddress = await getAssociatedTokenAddress(mint, wallet.publicKey)
if (await connection.getAccountInfo(associatedTokenAddress)) {
return associatedTokenAddress
}
return await createAssociatedTokenAccount(connection, wallet, mint , wallet.publicKey)
Имея AssociatedTokenAccount реферера, мы уже можем начислять токены сразу после перевода SOL (в финальной стадии транзакции доната).
С какого адреса мы начисляем токены реферарам?
Варианты:
- При помощи MINT внутри контракта - для каждого доната делать MINT на AssociatedTokenAccount реферера
- Сделать большой MINT при инициализации банка донатов (pre-MINT) и потом уже только переводить токены (transfer) на AssociatedTokenAccount реферера
При этом, для переводов токена нужна подпись приватным ключом банка.
Нужно делать оценку по стоимости газа.
Награждение рефереров. Стратегия 1
- PRE-MINT токена платформы (CHRT) + ручное награждение донатеров Владельцем банка (CREATOR) | (условно, раз в сутки)