# SHINE Payments v2 (краткое описание) ## Назначение `shine_payments` v2 — контракт очереди выплат: 1. Покупка билета в очередь 1: - пользователь переводит SOL в DAO; - получает тикет с суммой будущей выплаты `input * coef`. 2. Шаг выплат: - из inflow-вольта платится следующий тикет; - такая же сумма отправляется в DAO; - фиксированная награда отправляется вызвавшему шаг. ## PDA 1. `config_pda` (`shine_payments_v2_config`) - `dao_wallet` - `manager_wallet` - `inflow_vault` - `call_reward_lamports` 2. `coef_limit_pda` (`shine_payments_v2_coef_limit`) - `coef_ppm` (коэффициент в fixed-point, scale = 1_000_000) - `limit_lamports` 3. `queues_pda` (`shine_payments_v2_queues`) - очередь 1: `tickets_total`, `tickets_paid`, `sum_total`, `sum_paid` - очередь 2: `tickets_total`, `tickets_paid`, `sum_total`, `sum_paid` 4. `inflow_vault_pda` (`shine_payments_v2_inflow_vault`) - PDA-вольт программы для выплат. 5. `q1_ticket_pda` (`shine_payments_v2_q1_ticket + index_le_u64`) - `is_paid` - `recipient_wallet` - `payout_lamports` - `debt_before_lamports` - `index` ## Методы 1. `init` - вызывается один раз (кто угодно); - создает `config_pda`, `coef_limit_pda`, `queues_pda`, `inflow_vault_pda`. 2. `update_coef_limit` (только manager) - меняет коэффициент и лимит. 3. `buy_ticket` - проверяет, что текущий долг очереди 1 меньше лимита; - переводит входную сумму в DAO; - создает тикет в очереди 1; - увеличивает агрегаты очереди. 4. `step_payout` - если есть тикеты в очереди 1: - платит `X` получателю тикета, - платит `X` в DAO, - платит reward вызвавшему; - помечает тикет выплаченным, обновляет агрегаты. - если обе очереди пусты/полностью выплачены: - переводит из inflow-вольта в DAO весь доступный остаток (сверх ренты), - reward не платится. ## Стартовые настройки См. `programs/shine_payments/src/settings.rs`: - `START_COEF_PPM = 5_000_000` (коэффициент 5.0) - `START_LIMIT_LAMPORTS = 100 SOL` - `START_CALL_REWARD_LAMPORTS = 0.008 SOL` - `DAO_WALLET`, `MANAGER_WALLET`