# Запрет получателя тикета, равного inflow-вольту (защита от заморозки очереди) ## Краткое описание Закрыта HIGH-находка второго аудита (`Dev_Docs/audit/Solana-audit-2-by-Claude-11июня2026.md`). Тикет с `recipient_wallet == адрес inflow_vault` приводил к алиасингу аккаунта в `step_payout` (вольт одновременно источник и получатель), второй mutable-займ лампортов в `transfer_from_vault` падал, и такой тикет навсегда блокировал обслуживание очереди и замораживал средства вольта. Исправление в `shine_payments`: - `buy_ticket_by_purchase_usd` — `require!(recipient_wallet != config.inflow_vault)`; - `process_manager_add_ticket` — запрет через `find_single_pda(INFLOW_VAULT_SEED)`; - `process_change_ticket_recipient` — тот же запрет для `new_recipient_wallet`; - `transfer_from_vault` — защита по умолчанию `require!(vault.key != recipient.key)`. Ошибка во всех случаях — `InvalidTicketRecipient`. ## Что проверять (devnet/localnet) 1. Покупка тикета с `recipient_wallet = <адрес inflow_vault PDA>` → отклоняется (`InvalidTicketRecipient`), тикет не создаётся. 2. `manager_add_ticket` с тем же recipient → отклоняется. 3. `change_ticket_recipient` с `new_recipient = inflow_vault` → отклоняется. 4. Обычные покупки/выплаты с нормальным получателем → работают как раньше, очередь обслуживается, `step_payout` выплачивает корректно. 5. Регресс не затронул выплаты в `dao_wallet` и `call_reward` подписанту (их адреса не совпадают с вольтом). ## Ожидаемый результат Тикет с получателем-вольтом невозможно создать; ранее существовавший вектор перманентной заморозки очереди закрыт. Прочая логика выплат без изменений. ## Статус pending