SHiNE-server/Dev_Docs/Solana_Architecture/details/shine_login_guard.md

3.2 KiB
Raw Permalink Blame History

shine_login_guard

Кратко

shine_login_guard — первая программа Solana-модуля SHiNE. Она проверяет логин перед регистрацией пользователя и возвращает класс логина.

Папка программы: shine-solana/shine/programs/shine_login_guard/.

Текущая функция

  1. classify_login(login: String)
    • Нормализует логин.
    • Проверяет длину и допустимые символы.
    • Сравнивает части логина со словарями premium/trademark.
    • Возвращает результат через set_return_data.

Классы результата:

  • 0 — обычный логин, регистрацию можно продолжать.
  • 1 — premium-логин.
  • 2 — trademark-логин, нужна отдельная проверка/разрешение.

Правила нормализации и классификации

Текущая логика из programs/shine_login_guard/src/lib.rs:

  • пустой логин или логин длиннее 20 символов получает класс premium;
  • _ при нормализации удаляется;
  • допустимы только ASCII-буквы и цифры, остальные символы дают класс premium;
  • после удаления _ результат приводится к нижнему регистру;
  • логины длиной 7 символов или меньше считаются premium;
  • логин разбивается максимум на 3 словарных фрагмента;
  • если среди найденных фрагментов есть trademark-слово, результат trademark;
  • если найдены только premium-слова, результат premium;
  • если разбиение по словарям не найдено, результат free.

Словари собираются на этапе build из файлов:

  • programs/shine_login_guard/src/dictionaries/premium/*.txt
  • programs/shine_login_guard/src/dictionaries/trademarks/*.txt

Роль в общей схеме

shine_users::create_user_pda вызывает shine_login_guard через CPI и продолжает регистрацию только если логин получил класс 0.

Ключи и управление

На старте удобно считать, что у программы есть отдельный управляющий ключ key_1.

Текущая рекомендация:

  • пока оставить shine_login_guard под отдельным ключом;
  • не передавать ее DAO до стабилизации правил premium/trademark;
  • позже можно передать upgrade-authority DAO, чтобы изменения словарей и правил проходили через голосование.

Счета

Собственных постоянных PDA-счетов у программы сейчас нет. Для проверки нужен только подписант транзакции в ClassifyLogin.