# Движение Средств (Shine) Документ описывает, как перемещаются средства между счетами в текущей схеме. ## 1) Регистрация и увеличение лимита (`shine_users`) ### Регистрация пользователя (`create_user_pda`) 1. Плательщик: кошелек `signer` (кто отправил транзакцию). 2. Получатель комиссии: `inflow_vault` (PDA в программе `shine_payments`). 3. Сумма перевода: - `registration_fee_lamports` из economy-конфига `shine_users`; - плюс комиссия за `additional_limit` (по формуле через `limit_step` и `lamports_per_limit_step`). ### Увеличение лимита (`update_user_pda`) 1. Плательщик: кошелек `signer`. 2. Получатель комиссии: `inflow_vault` (тот же PDA `shine_payments`). 3. Сумма перевода: - только комиссия за `additional_limit` (без регистрационной части). ## 2) Покупка билета (`shine_payments`) ### Покупка (`buy_ticket`, `buy_ticket_usd`, `buy_ticket_sol`) 1. Плательщик: кошелек покупателя (`signer`). 2. Получатель: `dao_wallet` (казна DAO из `ConfigState`). 3. В `inflow_vault` на этом шаге средства не зачисляются. ## 3) Шаг выплат (`shine_payments::step_payout`) Источник выплат: `inflow_vault` (`ConfigState.inflow_vault`). Порядок очередей: 1. сначала `Q1`; 2. потом `Q2`; 3. потом `Q3`. При шаге выплаты: 1. Из `inflow_vault` переводится `ticket` получателю тикета. 2. Из `inflow_vault` переводится DAO-часть в `dao_wallet`. - для `Q1` это `1x payout_usd`; - для `Q2` это `2x payout_usd`; - для `Q3` это `3x payout_usd`; 3. Из `inflow_vault` переводится `call_reward_lamports` вызывающему шаг. Если очереди пусты: 1. Весь доступный остаток `inflow_vault` переводится в `dao_wallet`. ## 4) Какие адреса задаются настройками 1. `dao_wallet` — хранится в `ConfigState` (`shine_payments`), задается при `init`. 2. `inflow_vault` — PDA `shine_payments`, вычисляется по seed и program id. 3. Для `shine_users` получатель комиссии не настраивается отдельно: - всегда используется PDA `inflow_vault` программы `shine_payments`.