SHiNE-server/shine-solana/shine/tests/temp_delete_user_pda.md

2.7 KiB
Raw Blame History

Временная версия shine_users с удалением user_pda

Статус: только для тестов регистрации

Этот файл хранит временную версию логики, которая была нужна для отладки регистрации пользователей через ESP32. В основной программе shine_users удаление PDA не должно оставаться.

Зачем это нужно

  • быстро очищать тестовые user PDA на devnet/localnet;
  • сохранять рабочий вариант на случай, если понадобится снова проверять регистрацию без ручной очистки цепочки;
  • не смешивать временную отладочную логику с нормальным контрактом.

Что было временно добавлено

В devnet-версии программы существовала инструкция:

tag = 5
delete_user_pda_temp

Она:

  • принимала любой signer;
  • работала только с валидной user_pda;
  • проверяла, что PDA действительно относится к shine_users;
  • очищала данные PDA через realloc(0, false);
  • переносила лампорты тестового аккаунта в DAO_AUTHORITY.

Важные ограничения

  • это не часть нормальной модели shine_users;
  • в основном контракте этой инструкции быть не должно;
  • файл нужен только как архив для регрессионных тестов регистрации.

Фрагмент логики

// Временная инструкция для ручной чистки тестовых user PDA на devnet/localnet.
// Любой signer мог удалить запись, но лампорты возвращались только в тестовый treasury.
//
// Порядок был таким:
// 1. найти и проверить user PDA;
// 2. обнулить data через realloc(0, false);
// 3. перенести лампорты в DAO_AUTHORITY;
// 4. завершить инструкцию.

Что помнить при возврате этой фичи

Если временное удаление снова понадобится:

  1. сначала отдельным патчем включить его в shine_users;
  2. потом отдельно задеплоить в devnet;
  3. после проверки удалить из основной программы снова.