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) | (условно, раз в сутки)