3.2 KiB
3.2 KiB
shine_login_guard
Кратко
shine_login_guard — первая программа Solana-модуля SHiNE. Она проверяет логин перед регистрацией пользователя и возвращает класс логина.
Папка программы: shine-solana/shine/programs/shine_login_guard/.
Текущая функция
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/*.txtprograms/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.